@ConfigurationProperties注解赋值

在使用@ConfigurationProperties注解标注在类上,配置@Component注解,理论上来讲应该是可以创建出SpringBean并自动赋值。

application.properties配置

oauth.key=123
oauth.secret=abc

注解配置

@Component
@ConfigurationProperties(prefix = "oauth")
public class OauthProperties {

    private String key;

    private String secret;

    @Override
    public String toString() {
        return "OauthProperties{" +
                "key='" + key + '\'' +
                ", secret='" + secret + '\'' +
                '}';
    }
}

最后从容器中获取时对象的属性都是null
在这里插入图片描述

排查发现,这个注解在使用反射赋值时,会将application.properties配置的值 -转驼峰,然后去寻找对应的set方法,如 key ⇒ setKey , key-gen ⇒ setKeyGen。这里的set后面大小写均可以

  • 提供好set方法后再次测试
oauthProperties = OauthProperties{key='123', secret='abc'}
  • 将set方法改名再测试,发现也是可以的
oauthProperties = OauthProperties{key='123', secret='abc'} 
  • 测试驼峰命名注入
oauth.key=123
oauth.secret-gen=abc
    public void setsecretgen(String secret) {
        this.secret = secret;
    }

这种注入也是可以的,但是方法名去掉set前缀后注入失败,为了遵循方法名命名规范,set后面还是尽量采取驼峰命名法。

此外,以@Bean的这种方式创建Bean时,也会采取这种规则,寻找对应的set方法。

    @Bean
    @ConfigurationProperties(prefix = "oauth")
    public OauthProperties oauthProperties(){
        OauthProperties properties = new OauthProperties();
        return properties;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值