springboot创建bean通过构造方法(只有一个构造方法的情况下)注入其他bean(参数)

简介

spring容器本身在创建bean的时候,会自动从容器中查找 参数 类型的 bean,并将其注入到构造方法中。

例子

在 AlgcPropertiesAutoConFiguration 类中,构造方法接收一个 AlgcProperties 类型的参数。假设此时容器中已经存储在 AlgcProperties类型的bean, AlgcPropertiesAutoConFiguration 的 bean 实例时,会自动从容器中查找 AlgcProperties 类型的 bean,并将其注入到构造方法中。

java 复制代码
@Component
public class AlgcPropertiesAutoConFiguration {
    private AlgcProperties algcProperties;

    public AlgcPropertiesAutoConFiguration(AlgcProperties algcProperties) {
        this.algcProperties = algcProperties;
    }
    }

定义AlgcPropertiesAutoConFiguration的属性algcProperties

java 复制代码
private AlgcProperties algcProperties;

通过构造方法赋值,由于这里的AlgcPropertiesAutoConFiguration类使用了@Configuration注解,会被spring容器管理,并且自动创建,所以构造方法中的algcProperties参数,会自动从spring容器中査找AlgcProperties 类型的 bean,并将其注入到构造方法中。

java 复制代码
public AlgcPropertiesAutoConFiguration(AlgcProperties algcProperties) {
        this.algcProperties = algcProperties;
    }

如果AlgcProperties 类型的 bean有多个,那就需要使用@Qualifier注解指定具体的bean,这里指定了一个名为specificAlgcProperties的bean

java 复制代码
public AlgcPropertiesAutoConFiguration(@Qualifier("specificAlgcProperties")AlgcProperties algcProperties) {
        this.algcProperties = algcProperties;
    }
相关推荐
AntBlack15 分钟前
都说 SpringBoot 启动慢 ,你知道慢在哪里吗?
java·spring boot·面试
Asthenia041230 分钟前
Numpy:数组的范围创建/变形/转置/展平
后端
暮湫38 分钟前
javaWeb axios
java·web
兔子的洋葱圈40 分钟前
【django】3 (django路由) 路由配置和反向解析
后端·python·django
Asthenia04121 小时前
NumPy 数组创建方法与区间差异分析
后端
霍珵蕴1 小时前
Haskell语言的区块链安全
开发语言·后端·golang
Asthenia04121 小时前
Kafka文件存储与消息存储机制深度分析及与RocketMQ对比
后端
霍珵蕴1 小时前
R语言的嵌入式图形界面
开发语言·后端·golang
qq_340474021 小时前
6.1 python加载win32或者C#的dll的方法
java·python·c#
审计侠1 小时前
Apache Struts2 漏洞(CVE-2017-5638)技术分析
java·struts·web安全·apache·安全性测试