Spring在没有@Autowired注解的情况下将依赖项注入构造函数中
我正在尝试这个官方Spring 教程中的示例,并且对此代码有依赖性:https :
//github.com/spring-guides/gs-async-
method/tree/master/complete
如果您看一下AppRunner.java
课堂上的代码,我有两个问题:
- 服务器启动时,如果我在此类的构造函数中放置一个断点,就像在构造函数中那样,它
GitHubLookupService
是由spring使用@Service
配置的bean 提供的。但是,@Autowired
构造函数上没有注释,那么在世界范围内如何以正确的依赖关系调用此构造函数?应该是null
。
这是 的自动假设吗?
Spring是否看到“私有字段+构造函数参数”,并且假定它应该寻找合适的bean?
是 还是 ?
我缺少什么了吗?
- 如我所记得,必须为bean /服务等提供 默认构造函数 。为什么此类(
AppRunner
)没有默认构造函数?Spring如何知道应该使用参数运行构造函数?是因为它是唯一的构造函数吗?
回答:
从Spring 4.3 开始,如果配置为Spring
bean的类仅具有一个构造函数,则@Autowired
可以省略注释,并且Spring将使用该构造函数并注入所有必需的依赖项。
关于 默认构造函数
:您要么需要默认构造函数,要么需要一个带有@Autowired
多个注释的构造函数,要么在您的类中只有一个带有或不带有@Autowired
注释的构造函数。
阅读@Autowired
Spring官方文档中的章节以获取更多信息。
以上是 Spring在没有@Autowired注解的情况下将依赖项注入构造函数中 的全部内容, 来源链接: utcz.com/qa/429633.html