springboot读取resource配置文件生成容器对象的示例代码

 更新时间:2023年07月26日 14:32:58   作者: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配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Java Executors创建线程池的9种方法

    使用Java Executors创建线程池的9种方法

    文章主要介绍了 Java 中Executors类创建线程池的 9 种方法,每种方法都详细阐述了实现原理、源代码分析、参数解释、实现过程、特性和使用场景,感兴趣的小伙伴跟着小编一起来看看吧
    2024-11-11
  • JavaWeb实现压缩多个文件并下载实例详解

    JavaWeb实现压缩多个文件并下载实例详解

    本文通过实例代码给大家讲解了javaweb实现压缩多个文件并下载功能,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-07-07
  • Java设计模式中的适配器模式

    Java设计模式中的适配器模式

    这篇文章主要介绍了Java设计模式中的适配器模式,适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器
    2022-07-07
  • 简单总结单例模式的4种写法

    简单总结单例模式的4种写法

    今天带大家学习java的相关知识,文章围绕着单例模式的4种写法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java BeanMap实现Bean与Map的相互转换

    Java BeanMap实现Bean与Map的相互转换

    这篇文章主要介绍了利用BeanMap进行对象与Map的相互转换,通过net.sf.cglib.beans.BeanMap类中的方法来转换,效率极高,本文给大家分享实现代码,感兴趣的朋友一起看看吧
    2022-11-11
  • Activiti如何动态获取流程图过程详解

    Activiti如何动态获取流程图过程详解

    这篇文章主要介绍了Activiti如何动态获取流程图过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 如何解决freemarker静态化生成html页面乱码的问题

    如何解决freemarker静态化生成html页面乱码的问题

    这篇文章主要介绍了如何解决freemarker静态化生成html页面乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Java编程读写锁详解

    Java编程读写锁详解

    本篇文章给大家详细分享了Java编程读写锁的相关原理以及知识点内容,有兴趣的朋友们可以参考下。
    2018-08-08
  • Struts2源码分析之ParametersInterceptor拦截器

    Struts2源码分析之ParametersInterceptor拦截器

    这篇文章主要介绍了Struts2源码分析之ParametersInterceptor拦截器,ParametersInterceptor拦截器其主要功能是把ActionContext中的请求参数设置到ValueStack中,,需要的朋友可以参考下
    2019-06-06
  • 一文详解前端和后端的数据是如何连接的(基于Spring Boot、Django或Node.js)

    一文详解前端和后端的数据是如何连接的(基于Spring Boot、Django或Node.js)

    这篇文章主要介绍了前端和后端的数据是如何连接的相关资料,文中通过示例介绍的非常详细,举例讲解的是基于Spring Boot、Django或Node.js,需要的朋友可以参考下
    2025-01-01

最新评论