Spring @Import注解配置类方法内部调用没有注入属性值的坑

一、场景复现

application.yaml

spring:
  application:
    name: config-test
  profiles:
    active: dev

config:
  config-01:
    name: zhansan
    code: 001
  config-02:
    name: lisi
    code: 002

 导入配置类

@Configuration
@Import(ImportConfig.class)
public class Config {

    @Bean
    @ConfigurationProperties(prefix = "config.config-a")
    public ConfigInfo oneConfig() {
        return new ConfigInfo();
    }

    @Bean
    public String oneName() {
        ConfigInfo configInfo = this.oneConfig();
        return configInfo.getName();
    }

}
Import配置类
public class ImportConfig {

    @Bean
    @ConfigurationProperties(prefix = "config.config-b")
    public ConfigInfo twoConfig() {
        return new ConfigInfo();
    }

    @Bean
    public String twoName() {
        ConfigInfo configInfo = this.twoConfig();
        return configInfo.getName();
    }

    @Bean
    public String twoName1(@Qualifier("twoConfig") ConfigInfo configInfo) {
        return configInfo.getName();
    }
}

运行结果

oneName为zhansan

twoName为null

twoName为lisi

 

 

 

 二、分析原因

由于@Configuration标注的类代理,自动增强拦截功能。@Import的类没有被@Configuration修饰,所有没有增强方法注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值