Spring框架4.3.0 - 我什么时候需要@Autowired?

时间:2016-06-20 19:44:58

标签: java spring

我刚刚开始学习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?

2 个答案:

答案 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注释。