Springboot yml Map List读取方式
Springboot yml Map List读取
Springboot 读取yml中的值作为参数,有2种写法:
例子:
已知有如下yml配置:
myapps: 1131f78c313e11e79da3000c298bdf0e: AMS系统 1ae211c543a14cf6981274fec3281f0c: BMS系统 app1: 测试
现在需要将myapps读到配置文件作为配置类。有2种做法:
1、配置类集中放置
也就是说应用中设一个配置类,所有涉及yml配置的类都放置在该类中。
@Configuration @Order(Ordered.HIGHEST_PRECEDENCE) public class MyConfiguration { static Logger log = LoggerFactory.getLogger(MyConfiguration.class); @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } @Value("${px.a.trackerServer}") String trackerServer = ""; @Value("${px.a.disabled:true}") boolean disableA = true; @Bean @ConfigurationProperties(prefix = "px.client") ClientConfigInfo clientConfigInfo(){ ClientConfigInfo clientConfigInfo = new ClientConfigInfo(); return clientConfigInfo; } @Bean @ConfigurationProperties(prefix = "px") MyAppConfiguration myAppConfiguration(){ MyAppConfiguration myAppConfiguration = new MyAppConfiguration (); return myAppConfiguration; } }
这里配置为:
@Bean @ConfigurationProperties(prefix = "px") UdsAppConfiguration udsAppConfiguration(){undefined UdsAppConfiguration udsAppConfiguration = new UdsAppConfiguration(); return udsAppConfiguration; }
2、配置类单独放置
也就是说把MyAppConfiguration单独作为一个配置类进行单独的组装。
@Component @ConfigurationProperties(prefix="px", ignoreInvalidFields=true, ignoreUnknownFields=true) public class MyAppConfiguration { static Logger log = LoggerFactory.getLogger(MyAppConfiguration.class); private Map<String, String> mysapps = new HashMap<String, String>(); public Map<String, String> getMyapps() { return myapps; } public void setMyapps(Map<String, String> myapps) { this.myapps = myapps; } }
3、List读取
(1)yml
myapps: - 1131f78c313e11e79da3000c298bdf0e: AMS系统 - 1ae211c543a14cf6981274fec3281f0c: BMS系统 - app1: 测试
(2)配置类写法
@Component @ConfigurationProperties(prefix="px", ignoreInvalidFields=true, ignoreUnknownFields=true) public class MyAppConfiguration { static Logger log = LoggerFactory.getLogger(MyAppConfiguration.class); private List<Map<String, String>> mysapps = new ArrayList<Map<String, String>>(); public List<Map<String, String>> getMyapps() { return myapps; } public void setMyapps(List<Map<String, String>> myapps) { this.myapps = myapps; } }
4、问题:配置类没有获取到值
该问题的原因很可能是yml中定义的key与配置类中定义的属性名称不一致,导致Springboot自动装配时失败。出现该问题后,一定首先要仔细检查配置类对应属性的名称以及配置类映射的路径。
Springboot yml内list、map组合写法
yml:
myProps: varmaplist: key11: - t1 - t2 - t3 key22: - t11 - t22 - t33 list: - topic1 - topic2 - topic3 maps: {key1: 'value1', key2: 'value2'}
MyProps:
@Component @Data @Configuration @PropertySource(value = {"classpath:/bootstrap.yml"}, encoding = "utf-8") @ConfigurationProperties(prefix = "myProps") public class MyProps { private List<String> list; private Map<String,String> maps; private Map<String,List<String>> varmaplist; }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
JSON的String字符串与Java的List列表对象的相互转换
这篇文章主要介绍了JSON的String字符串与Java的List列表对象的相互转换,如果在浏览器端JSON是list则转为string结构来处理,需要的朋友可以参考下2016-04-04spring security中的csrf防御原理(跨域请求伪造)
这篇文章主要介绍了spring security中的csrf防御机制原理解析(跨域请求伪造),本文通过实例代码详解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-12-12Java thread.isInterrupted() 返回值不确定结果分析解决
这篇文章主要介绍了Java thread.isInterrupted() 返回值不确定结果分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2022-12-12Java中String、StringBuffer、StringBuilder的区别详解
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间有什么区别呢?下面小编给大家总结了Java中String、StringBuffer、StringBuilder的区别详解,需要的朋友参考下吧2016-06-06mybatis中<if>标签bool值类型为false判断方法
这篇文章主要给大家介绍了关于mybatis中<if>标签bool值类型为false判断方法,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-08-08
最新评论