@EnableConfigurationProperties 注解的使用

先说作用:

@EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效

/**
 * 要使用构造函数绑定,必须使用@EnableConfigurationProperties或配置属性扫描启用类。
 * 不能对由常规 Spring 机制创建的 Bean 使用构造函数绑定(例如@Component Bean、通过
 * @Bean 方法创建的 Bean 或使用@Import 加载的 Bean
 */

说明:

用springboot开发的过程中,我们会用到@ConfigurationProperties注解,主要是用来把properties或者yml配置文件转化为bean来使用的,而@EnableConfigurationProperties注解的作用是@ConfigurationProperties注解生效。
如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的,当然在@ConfigurationProperties加入注解的类上加@Component也可以使交于springboot管理。

说白了 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。
 

测试:
@ConfigurationProperties 与 @EnableConfigurationProperties 的关系。

@EnableConfigurationProperties 文档中解释:
@EnableConfigurationProperties注解应用到你的@Configuration时, 任何被@ConfigurationProperties注解的beans将自动被Environment属性配置。 这种风格的配置特别适合与SpringApplication的外部YAML配置进行配合使用。

测试发现:
1.使用 @EnableConfigurationProperties  Controller类

@RestController
@EnableConfigurationProperties(AcmeProperties.class)
public class YamlController {

    @Autowired
    private AcmeProperties acmeProperties;

    @GetMapping("test")
    public AcmeProperties acme(){
        System.out.println(acmeProperties);
        return acmeProperties;
    }

}

 

2.@ConfigurationProperties

@Data
@ConfigurationProperties("acme")
@ConstructorBinding
public class AcmeProperties {
    private boolean enabled;
    private InetAddress remoteAddress;
    private  Security security ;

    public AcmeProperties(boolean enabled, InetAddress remoteAddress ,Security security) {
        this.enabled = enabled;
        this.remoteAddress = remoteAddress;
        this.security = security;
    }

    @Data
    public static class Security{
        private String username;
        private String password;
        private List<String> roles = new ArrayList<>();

        public Security(String username, String password, List<String> roles) {
            this.username = username;
            this.password = password;
            this.roles = roles;
        }
    }
}

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值