@EnableConfigurationProperties注解
目录
1.概述
2.测试
2.1 使用 @EnableConfigurationProperties 进行注册
2.2 使用 @Component 注册
3.项目中的使用场景
1.概述
@EnableConfigurationProperties注解的作用是:使 使用 @ConfigurationProperties 注解的类生效。
如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component或者实现了@Component的其他注解,那么在IOC容器中是获取不到properties 配置文件转化的bean。说白了 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。
简单点说@EnableConfigurationProperties的功能类似于@Component。
2.测试
2.1 使用 @EnableConfigurationProperties
进行注册
@ConfigurationProperties(prefix = "service.properties")
public class HelloServiceProperties {private static final String SERVICE_NAME = "test-service";private String msg = SERVICE_NAME;set/get
}@Configuration
@EnableConfigurationProperties(HelloServiceProperties.class)
@ConditionalOnClass(HelloService.class)
@ConditionalOnProperty(prefix = "hello", value = "enable", matchIfMissing = true)
public class HelloServiceAutoConfiguration {}@RestController
public class ConfigurationPropertiesController {@Autowiredprivate HelloServiceProperties helloServiceProperties;@RequestMapping("/getObjectProperties")public Object getObjectProperties () {System.out.println(helloServiceProperties.getMsg());return myConfigTest.getProperties();}
}
配置文件application.properties
service.properties.name=my-test-name
service.properties.ip=192.168.1.1
service.user=kayle
service.port=8080
一切正常,但是 HelloServiceAutoConfiguration 头部不使用 @EnableConfigurationProperties
,测访问报错。
2.2 使用 @Component
注册
不使用 @EnableConfigurationProperties
进行注册,使用 @Component
注册
@ConfigurationProperties(prefix = "service.properties")
@Component
public class HelloServiceProperties {private static final String SERVICE_NAME = "test-service";private String msg = SERVICE_NAME;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}
Controller 不变,一切正常,如果注释掉 @Component 测启动报错。
由此证明,两种方式都是将被 @ConfigurationProperties 修饰的类,加载到 Spring Env 中。
3.项目中的使用场景
如下,在配置类NacosConfigAutoConfiguration的头上加注解@EnableConfigurationProperties(NacosConfigProperties.class),
而在NacosConfigProperties配置类本身并没有实现了@Component相关的注解,也就是说运行项目时,不会直接把NacosConfigProperties配置类注入到Spring 容器中,而是在执行NacosConfigAutoConfiguration这个配置类时才会去把NacosConfigProperties类注入到spring
如下,NacosConfigProperties类本身并没有@Component相关注解:
参考链接:关与 @EnableConfigurationProperties 注解 - 简书
@EnableConfigurationProperties注解相关推荐
- Spring Boot 关于 @EnableConfigurationProperties 注解 —— 使用 @ConfigurationProperties 注解的类生效。
先说作用: @EnableConfigurationProperties注解的作用是:使用 @ConfigurationProperties 注解的类生效. 说明: 如果一个配置类只配置@Config ...
- @EnableConfigurationProperties 注解和@ConfigurationProperties注解实现配置绑定
ConfigurationProperties注解主要用来把properties配置文件转化为bean来使用的,而@EnableConfigurationProperties注解的作用是@Config ...
- Spring : @EnableConfigurationProperties注解
1.美图 2.概述 @EnableConfigurationProperties注解的作用是让使用@ConfigurationProperties注解的类生效.你可以通过在@EnableConfigu ...
- @EnableConfigurationProperties 注解
关于YAML与Properties文件中的key 与 JavaBean 中属性的对应关系,观测源代码 ConfigurationPropertyName.elementEquals 方法得知,有以下几 ...
- 关于 @EnableConfigurationProperties 注解
先说作用: @EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效. 说明: 用springboot开发的过程 ...
- 关于@EnableConfigurationProperties 注解
先说作用: @EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效. 说明: 如果一个配置类只配置@Confi ...
- SpringBoot - @EnableConfigurationProperties注解使用详解
@EnableConfigurationProperties注解的作用是什么? 将标注了@ConfigurationProperties注解的类注入到Spring容器中.该注解是用来开启对@Confi ...
- SpringBoot之@EnableConfigurationProperties分析
我们在用SpringBoot进行项目开发的时候,基本上都使用过@ConfigurationProperties这个注解,我们在之前的文章中也说过ConfigurationPropertiesBindi ...
- SpringBoot @Value、 @ConfigurationProperties 与 @EnableConfigurationProperties 使用
文章目录 @Value 用法 @Value("#{}") @Value("${}") ConfigurationProperties 用法 使用@Compone ...
最新文章
- java游戏脱逃_App Store 上的“冒险的逃离筏船”
- iOS网络开发(8)文件下载的实现
- div中插入图片_Web前端开发基础知识,设置网页背景图,如何在网页中插入图片...
- rabbitmq-plugins.bat enable rabbitmq_management
- 桥接模式 - 设计模式学习
- 对软件研发项目管理的深入探讨
- 运维工程师之-MySQL的故障问题总结
- linux 生成2g文件吗,linux 32位系统 c++写大于2G文件
- 启动Activity不显示界面
- 怎么样更好的做好站内的优化
- 【空间分析】0 基本空间分析工具
- python切面_Python装饰器与面向切面编程
- STM32的ADC多通道采集的实现
- 计算机逻辑与 或 非的表达式,逻辑表达式
- RK3399与MIPI DSI之间在DRM架构下的联结关系
- angular 脏值检测基础流程
- Day07 Scanner 类、 Random 类、 ArrayList 类 6.20
- 稿定设计怎么去除水印?
- Yii中CGridView单元格组件和数据提供者的使用
- 由圆上三点确定圆心和半径(附PythonMatlab程序)