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

4

我刚开始学习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个回答

7
自Spring 4.3版本开始,如果你的类只有一个构造函数,则不需要指定注入注释。
因此,在这种单构造函数情况下,4.3版本之后你不再需要指定显式注入注释。这对于否则根本没有携带任何容器注释的类特别优雅。
你可以在这里看到:单构造函数场景的隐式构造函数注入 https://spring.io/blog/2016/03/04/core-container-refinements-in-spring-framework-4-3

5

这是Spring Boot 4.3中的一个新功能。如果你的类中只有一个构造函数,那么这个构造函数会被用来自动注入参数。如果你有多个构造函数,或者想要使用setter或者field注入,那么你仍然需要使用@Autowired注解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接