Spring依赖项注入如何在带有@Component注释但没有构造函数注释的类中工作?

时间:2019-03-25 18:44:07

标签: java spring dependency-injection

我的代码可以正常工作,但是我无法从哪里获得依赖注入。如Spring文档所述,关于默认依赖项注入一无所获。

package org.stackoverflow; 


@Component 
public class A {
    private final B b;
    public A(B b) {
      this.b = b;
    }
}

package org.segfault; 


@Configuration
Public class Config {
   @Bean 
   public B b(){ return new B(); }
}

与上述代码相同,组件扫描在com.stackoverflow和导入的org.segfault类配置路径上运行。但是正如您所看到的,类A中没有构造函数注入。

我怀疑它必须记录在某处。但我无法找出答案。无论如何,它正在工作:)

有人可以提供文档帮助吗?或者我缺少什么?

2 个答案:

答案 0 :(得分:2)

Spring文档的第17. Spring Beans and Dependency Injection章说:

  

如果bean具有一个构造函数,则可以省略@Autowired

答案 1 :(得分:1)

从Spring 4.3.*开始,就不再需要在构造函数上方指定@Autowire注释,只要有非私有该类的构造函数。

  

6.1核心容器的改进news
  如果目标bean仅定义一个构造函数,则不再需要指定@Autowired注释。