spring - 与普通 Autowiring 或属性 Autowiring 相比,构造函数 Autowiring 有什么优势?

标签 spring spring-boot

与属性 Autowiring 相比,构造函数 Autowiring 是否有任何特定优势......或普通优势。? Superior forcing team to use constructor autowiring in spring boot ..它有什么特别的优势吗?两种 Autowiring 的优缺点

最佳答案

构造函数 Autowiring 的优势在于,您可以将装配的字段设为最终(如果您的 bean 将从多个线程调用时特别有用,因为使用 final 更容易分析线程安全)。并且您可以确保 bean 始终以有效的方式构造(尽管您始终可以实现 InitializingBean 并使用 afterPropertiesSet 方法来实现相同的效果,如果您正在接线属性)。

如果你有很多字段,那么连接属性会更好,因为它避免了在你的构造函数中有很多参数,并且如果你使用 xml,按名称连接不太容易混淆变量(考虑一个有很多参数的构造函数一种类型 - 很容易连接错误的变量)。连接属性还可以更轻松地拥有可选属性 - 带有构造函数连接的可选属性将需要多个构造函数,这很快就会变得复杂。

总而言之,这两种方法各有利弊 - 我们通常使用属性连接,除非有特殊原因我们应该使用构造函数连接。

关于spring - 与普通 Autowiring 或属性 Autowiring 相比,构造函数 Autowiring 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48449804/

相关文章:

java - 如果一个 `changeSet` 申请失败,如何回滚 `databaseChangeLog` 内的所有 `changeSet` ?

java - Spring在嵌套类中注入(inject)bean null

spring - 使用 Spring amqp 在 rabbitmq 中重新排队消息

java - 我应该将所有类创建为 spring bean

java - 如何将数组传递给 JSP 中的 SpEL 表达式

java - 如何从主应用程序调用 Spring Boot 调用服务?

java - Jackson 在我的 Spring Boot 应用程序中忽略了 spring.jackson.properties

java - Spring Boot 服务器在使用 Retrofit2 进行 POST 时出错,仅当数据库中存在关系时才会发生

java - Geotools lib 突然从存储库中消失

java - Hystrix circuitBreaker.sleepWindowInMilliseconds 不工作