gpt4 book ai didi

Spring在没有@Autowired注解的构造函数中注入(inject)依赖项

转载 作者:行者123 更新时间:2023-12-01 19:40:49 26 4
gpt4 key购买 nike

我正在尝试这个官方 Spring tutorials 中的示例并且依赖于此代码:
https://github.com/spring-guides/gs-async-method/tree/master/complete

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

  1. 当服务器启动时,如果我在此类的构造函数中放置断点,似乎在构造函数中,GitHubLookupService由spring提供,使用@Service bean已配置。但是,构造函数上没有 @Autowired 注释,那么到底如何使用正确的依赖项调用这个构造函数呢?它应该是null

这是Spring Boot的自动假设吗?
Spring 是否看到“私有(private)字段 + 构造函数参数,并且它假设它应该寻找合适的 bean?
Spring Framework还是Spring boot
我错过了什么吗?

  • 据我所知,必须向 beans/service 等提供默认构造函数。为什么这个类 (AppRunner) 没有默认构造函数?Spring 如何知道它应该运行带有参数的构造函数?是因为它是唯一的构造函数吗?
  • 最佳答案

    从 Spring 4.3 开始,如果一个配置为 Spring bean 的类只有一个构造函数,则可以省略 @Autowired 注解,Spring 将使用该构造函数并注入(inject)所有必要的依赖项。

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

    阅读@Autowired有关详细信息,请参阅官方 Spring 文档的章节。

    关于Spring在没有@Autowired注解的构造函数中注入(inject)依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59176335/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com