springboot读取resource配置文件生成容器对象的示例代码
作者:Nuyoahll-_-ll
这篇文章主要介绍了springboot读取resource配置文件生成容器对象的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
背景:需要对地区和语言做映射,给一个映射表,通过映射来确定最后保留的是哪个值。可以写到数据库,但是数量比较小,直接放到配置文件读取即可。
1、使用@ConfigurationProperties直接读取配置文件中的属性
1、在application.properties中配置
# 引入application-language.yml 这个文件 spring.profiles.include=language
2、application-language.yml 文件信息
language-mapping: ...: 其他 Cantonese: 粤语 Chinese: 普通话 Danish: 丹麦语 Mende西班牙语: 西班牙语 Mongolian: 蒙古语 阿拉伯语: 阿拉伯语 安徽方言: 安徽方言 保加利亚语: 保加利亚语
3、便携配置类注入到容器中
@Configuration public class YmlMappingConfiguration { @Bean("languageMapping") @ConfigurationProperties("language-mapping") public Map<String,String> initLanguageMapping(){ return new HashMap<>(); } }
此时你就可以使用了,但是有个问题,他会默认把…、汉字作为key的给过滤掉,显然不是我们要的效果。
2、直接使用Resource读取配置文件,然后使用YamlMapFactoryBean获取map对象
@Configuration public class YmlMappingConfiguration { @Bean("languageMapping") public Map<String,String> initLanguageMapping2(){ final Resource resource = new ClassPathResource("application-language.yml"); final YamlMapFactoryBean factoryBean = new YamlMapFactoryBean(); factoryBean.setResources(resource); final Map<String, Object> object = factoryBean.getObject(); final HashMap<String, String> languageMappingFormat = new LinkedHashMap<>(); Map<String, String>languageMapping=(HashMap)object.getOrDefault("language-mapping", new HashMap<String, String>()); for (Map.Entry<String,String>entry:languageMapping.entrySet()){ final String trimKey = StringUtils.trimToNull(entry.getKey()); final String trimVal = StringUtils.trimToNull(entry.getValue()); if(trimKey!=null && trimVal!=null){ languageMappingFormat.put(trimKey,trimVal); } } return languageMappingFormat; } }
然后就能从容器中获得该对象进行逻辑操作了。
到此这篇关于springboot读取resource配置文件生成容器对象的文章就介绍到这了,更多相关springboot读取resource配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!