Spring在构造函数中注入依赖项,而不使用@Autowired注释

Spring在构造函数中注入依赖项,而不使用@Autowired注释,spring,spring-boot,dependency-injection,autowired,Spring,Spring Boot,Dependency Injection,Autowired,我正在用这个官方的Spring中的示例进行实验,并且依赖于以下代码: 如果您查看AppRunner.java类上的代码,我有两个问题: 当服务器启动时,如果我在这个类的构造函数中放置一个断点,就像在构造函数中一样,GitHubLookupService是由spring使用配置的@Servicebean提供的。但是,构造函数上没有@Autowired注释,因此如何使用正确的依赖项调用此构造函数?它应该是null 是否自动假定为弹簧启动? Spring是否看到“private field+cons

我正在用这个官方的Spring中的示例进行实验,并且依赖于以下代码:

如果您查看
AppRunner.java
类上的代码,我有两个问题:

  • 当服务器启动时,如果我在这个类的构造函数中放置一个断点,就像在构造函数中一样,
    GitHubLookupService
    是由spring使用配置的
    @Service
    bean提供的。但是,构造函数上没有
    @Autowired
    注释,因此如何使用正确的依赖项调用此构造函数?它应该是
    null
  • 是否自动假定为弹簧启动?
    Spring是否看到“private field+constructor”参数,并假定它应该查找适当的bean?
    它是Spring框架还是Spring引导
    我错过什么了吗

  • 我记得,为bean/服务等提供默认构造函数是一种改进。为什么这个类(
    AppRunner
    )没有默认构造函数? Spring如何知道它应该使用参数运行构造函数? 是因为它是唯一的构造函数吗
  • 从Spring4.3开始,如果配置为Springbean的类只有一个构造函数,则可以省略
    @Autowired
    注释,Spring将使用该构造函数并注入所有必要的依赖项

    关于默认构造函数:您需要默认构造函数,当您有多个构造函数时,需要一个带有
    @Autowired
    注释的构造函数,或者类中只有一个带或不带
    @Autowired
    注释的构造函数


    阅读Spring官方文档中的一章了解更多信息。

    与文档更相关的链接是,我有一个类似的问题,只是我的类没有被注释为Bean!事实上,它根本没有被注释!Spring仍然试图自动连接构造函数,但失败了,因为没有找到与构造函数参数。但是该类扩展了
    PropertySource
    。这可能是原因吗?有没有办法避免自动连接?