我刚刚开始学习Spring框架(我使用的是4.3.0版本),我认为我们需要@Autowired来告诉框架何时需要注入类。
但是,我今天试试这个:
@Component
public class CDPlayer implements MediaPlayer{
private CompactDisc cd;
//there are no @Autowired here
public CDPlayer(CompactDisc cd) {
this.cd = cd;
}
public void play() {
cd.play();
}
}
它与自动接线配置完美配合:
@Configuration
@ComponentScan
public class CDPlayerConfigAuto {
}
所以当我真的需要使用@Autowired?
答案 0 :(得分:6)
从Spring 4.3开始,如果你的类只有一个构造函数,那么这不是必需的。
从4.3开始,您不再需要指定显式注入 这种单构造函数场景中的注释。这是特别的 优雅的课程,否则不携带任何容器 注释。
你可以在这里看到:(单构造函数场景的隐式构造函数注入)
https://spring.io/blog/2016/03/04/core-container-refinements-in-spring-framework-4-3
答案 1 :(得分:5)
这是Spring Boot 4.3中的一项新功能。如果类中只有一个构造函数,则此构造函数将用于自动装配参数。如果你有更多的构造函数或者你想使用setter或field injection,那么你仍然需要@Autowired
注释。