Java 在构造函数上使用@Autowired

Java 在构造函数上使用@Autowired,java,spring,Java,Spring,在构造函数上使用@Autowired的好处是什么 @Autowired public MyClass(A a){ } 类中可以有final字段,通常甚至是不可变的无类移动部分,代码更清晰,更容易理解 而且类更容易测试,您总是知道要在其中设置什么属性来拥有一个工作类(因为构造函数强制您设置这些属性)——当然,仍然可以在参数中传递null。这样beana将被注入构造函数。它更干净,因为您可以声明bean的依赖项,因为如果不提供A,就无法实例化它。这使得测试更加容易。如果您想了解更多关于@Auto

在构造函数上使用@Autowired的好处是什么

@Autowired
public MyClass(A a){
} 

类中可以有
final
字段,通常甚至是不可变的无类移动部分,代码更清晰,更容易理解


而且类更容易测试,您总是知道要在其中设置什么属性来拥有一个工作类(因为构造函数强制您设置这些属性)——当然,仍然可以在参数中传递null。

这样bean
a
将被注入构造函数。它更干净,因为您可以声明bean的依赖项,因为如果不提供
A
,就无法实例化它。这使得测试更加容易。

如果您想了解更多关于@Autowired的内容

Spring在其文档中对此进行了解释:

  • 关于构造函数自动连线
  • 解释如何在构造函数、setter和属性上使用它

  • 当spring创建bean时,当它发现一个注释时,它是自动连接的。
    @autowired
    它只不过是基于构造函数的依赖项注入。

    此链接将提供更多信息

    那么类A应该通过使用bean或组件注释声明为bean,对吗?如果不是,spring不能使用autowired启动MyClass的实例?是的,没错。与什么相反?这里的上下文是什么?@Autowired用于构造函数。在后台,SpringFramework将在repo中搜索所有类型为“A”的实例,如果找到,对象将被实例化,否则将抛出错误