Spring中@ConfigurationProperties的用法解析
@ConfigurationProperties的用法
作用: 通过与其他注解配合使用,能够实现Bean的按需配置 可以放哪里: 类上,方法上
作用于方法
使用条件: 当将@ConfigurationProperties作用于方法上时,该方法需要有@Bean且所属类需要有@Configuration 使用场景: 比较常见的就是配置读写分离的场景
spring.datasource.druid.write.url=jdbc:mysql://localhost:3306/jpa spring.datasource.druid.write.username=root spring.datasource.druid.write.password=1 spring.datasource.druid.write.driver-class-name=com.mysql.jdbc.Driver spring.datasource.druid.read.url=jdbc:mysql://localhost:3306/jpa spring.datasource.druid.read.username=root spring.datasource.druid.read.password=1 spring.datasource.druid.read.driver-class-name=com.mysql.jdbc.Driver @Configuration public class DruidDataSourceConfig { @Bean(name = "readDruidDataSource") @ConfigurationProperties(prefix = "spring.datasource.druid.read") public DataSource readDruidDataSource() { return new DruidDataSource(); } @Primary @Bean(name = "writeDruidDataSource") @ConfigurationProperties(prefix = "spring.datasource.druid.write") public DataSource writeDruidDataSource() { return new DruidDataSource(); } }
作用于类
使用场景: 配置数据库
# 配置文件内容 spring.datasource.url=jdbc:mysql://127.0.0.1:8888/test?useUnicode=false&autoReconnect=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource @ConfigurationProperties(prefix = "spring.datasource") @Component public class DatasourcePro { private String url; private String username; private String password; private String driverClassName; // 配置文件中是driver-class-name, 转驼峰命名便可以绑定成 private String type; // standard getters and setters } @Controller @RequestMapping(value = "/config") public class ConfigurationPropertiesController { @Autowired private DatasourcePro datasourcePro; @RequestMapping("/test") @ResponseBody public Map<String, Object> test(){ Map<String, Object> map = new HashMap<>(); map.put("url", datasourcePro.getUrl()); map.put("userName", datasourcePro.getUsername()); map.put("password", datasourcePro.getPassword()); map.put("className", datasourcePro.getDriverClassName()); map.put("type", datasourcePro.getType()); return map; } }
总结
1、该注解有一个 prefix 属性,根据指定的前缀来绑定配置文件中的配置
2、@ConfigurationProperties 和 @value 有着相同的功能,@ConfigurationProperties 其实就类似于使用多个 @Value 同时绑定,绑定的是对象;
3、 @ConfigurationProperties 修饰的POJO类的命名比较严格,必须和 prefix 的后缀名一致, 不然值会绑定不上。但是配置文件里蛇形命名变量 “driver-class-name” 和 POJO里面转驼峰 命名属性 “driverClassName” 可以绑定成功。
到此这篇关于Spring中@ConfigurationProperties的用法解析的文章就介绍到这了,更多相关@ConfigurationProperties的用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决RestTemplate 的getForEntity调用接口乱码的问题
这篇文章主要介绍了解决RestTemplate 的getForEntity调用接口乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08Eclipse2020安装了最新版本的JDK却无法打开的问题
这篇文章主要介绍了Eclipse2020安装了最新版本的JDK却无法打开,提示版本太老的完美解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-12-12
最新评论