广告
返回顶部
首页 > 资讯 > 精选 >在Spring Boot项目中如何实现自定义PropertySourceLoader
  • 582
分享到

在Spring Boot项目中如何实现自定义PropertySourceLoader

propertysourceloaderspringbootce 2023-05-31 14:05:04 582人浏览 安东尼
摘要

今天就跟大家聊聊有关在Spring Boot项目中如何实现自定义PropertySourceLoader,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SpringBoot 的配置文件

今天就跟大家聊聊有关在Spring Boot项目中如何实现自定义PropertySourceLoader,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

SpringBoot 的配置文件内置支持 properties、xml、yml、yaml 几种格式,其中 properties和xml 对应的Loader类为 PropertiesPropertySourceLoader ,yml和yaml 对应的Loader类为 YamlPropertySourceLoader。

观察这2个类可以发现,都实现自接口 PropertySourceLoader 。所以我们要新增支持别的格式的配置文件,就可以通过实现接口 PropertySourceLoader 来实现了。

下面实现了一个 JSON 格式的配置文件 Loader类:

package com.shanhy.sboot.property;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;import org.springframework.boot.env.PropertySourceLoader;import org.springframework.boot.json.JsonParser;import org.springframework.boot.json.JsonParserFactory;import org.springframework.core.env.MapPropertySource;import org.springframework.core.env.PropertySource;import org.springframework.core.io.Resource;public class JsonPropertySourceLoader implements PropertySourceLoader {  public String[] getFileExtensions() {    // 配置文件格式(扩展名)    return new String[] { "json" };  }  public PropertySource<&#63;> load(String name, Resource resource, String profile) throws IOException {    // 处理机制参考PropertiesPropertySourceLoader    // 无论profile有没有值,底层都会尝试先执行 load(String name, Resource resource, null),所以这个地方之间判断等于null即可。    // 当前版本springboot-1.5.2(后续版本未知)详见 ConfigFileApplicationListener 的 445 行    if (profile == null) {      Map<String, Object> result = mapPropertySource(resource);      return new MapPropertySource(name, result);    }    return null;  }    private Map<String, Object> mapPropertySource(Resource resource) throws IOException {    if (resource == null) {      return null;    }    Map<String, Object> result = new HashMap<String, Object>();    JsonParser parser = JsonParserFactory.getJsonParser();    Map<String, Object> map = parser.parseMap(readFile(resource));    nestMap("", result, map);    return result;  }    private String readFile(Resource resource) throws IOException {    InputStream inputStream = resource.getInputStream();    List<Byte> byteList = new LinkedList<Byte>();    byte[] readByte = new byte[1024];    int length;    while ((length = inputStream.read(readByte)) > 0) {      for (int i = 0; i < length; i++) {        byteList.add(readByte[i]);      }    }    byte[] allBytes = new byte[byteList.size()];    int index = 0;    for (Byte soloByte : byteList) {      allBytes[index] = soloByte;      index += 1;    }    return new String(allBytes, "UTF-8");  }    @SuppressWarnings("unchecked")  private void nestMap(String prefix, Map<String, Object> result, Map<String, Object> map) {    if (prefix.length() > 0) {      prefix += ".";    }    for (Map.Entry<String, Object> entrySet : map.entrySet()) {      if (entrySet.getValue() instanceof Map) {        nestMap(prefix + entrySet.geTKEy(), result, (Map<String, Object>) entrySet.getValue());      } else {        result.put(prefix + entrySet.getKey().toString(), entrySet.getValue());      }    }  }}

--结束END--

本文标题: 在Spring Boot项目中如何实现自定义PropertySourceLoader

本文链接: https://www.lsjlt.com/news/226484.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在Spring Boot项目中如何实现自定义PropertySourceLoader
    今天就跟大家聊聊有关在Spring Boot项目中如何实现自定义PropertySourceLoader,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SpringBoot 的配置文件...
    99+
    2023-05-31
    propertysourceloader springboot ce
  • 在spring-boot项目中如何实现自定义filter
    在spring-boot项目中如何实现自定义filter?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。传统的javaEE增加Filter是在web.xml中配置...
    99+
    2023-05-31
    springboot 自定义 filter
  • 定时任务如何在Spring Boot 项目中实现
    定时任务如何在Spring Boot 项目中实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建定时服务一般来说定时服务会写在一个Component里,方便管理。对于定时任务...
    99+
    2023-05-31
    springboot boot 定时任务
  • spring boot如何实现自定义配置源
    这篇文章给大家分享的是有关spring boot如何实现自定义配置源的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概述我们知道,在Spring boot中可以通过xml或者@ImportResource 来引入自...
    99+
    2023-05-30
    springboot
  • Java 项目中如何实现自定义ArrayList
    本篇文章为大家展示了Java 项目中如何实现自定义ArrayList,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java 中模仿源码自定义ArrayList最近看了下ArrayList的源码,抽空...
    99+
    2023-05-31
    java 自定义 arraylist
  • 如何在Spring与Spring Boot项目中使用Dubbo
    这篇文章给大家介绍如何在Spring与Spring Boot项目中使用Dubbo,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、在Spring中使用Dubbo1、Maven依赖<dependency>&n...
    99+
    2023-05-30
    spring spring boot dubbo
  • 如何在Android项目中自定义title
    这篇文章给大家介绍如何在Android项目中自定义title,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先编写title的布局文件,title.xml:<xml version="1.0&...
    99+
    2023-05-31
    android roi title
  • freemarker如何在Spring Boot项目中使用
    今天就跟大家聊聊有关freemarker如何在Spring Boot项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。(1) freemarker介绍;FreeMarker是一...
    99+
    2023-05-31
    springboot freemarker
  • 如何在java 8项目中自定义collector
    本篇文章给大家分享的是有关如何在java 8项目中自定义collector,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需求:将 一个容器List<Bean> 按照...
    99+
    2023-05-31
    java8 collector ava
  • 在spring boot项目中如何实现使用thymeleaf实现页面跳转
    本篇文章为大家展示了在spring boot项目中如何实现使用thymeleaf实现页面跳转,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言在学习springboot 之后想结合着html做个小d...
    99+
    2023-05-31
    springboot thymeleaf 页面跳转
  • 在Spring Boot项目中如何实现使用 Mybatis中的@ Annotation注解
    在Spring Boot项目中如何实现使用 Mybatis中的@ Annotation注解?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、运行 springboot-myba...
    99+
    2023-05-31
    springboot mybatis @ annotation
  • 详解Spring Boot中如何自定义SpringMVC配置
    目录前言一、SpringBoot 中 SpringMVC 配置概述二、WebMvcConfigurerAdapter 抽象类三、WebMvcConfigurer 接口四、WebMvc...
    99+
    2022-11-12
  • 如何在Android项目中自定义view函数
    如何在Android项目中自定义view函数 ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先 往Canvas上面draw需要一个Paint。 Paint p ...
    99+
    2023-05-31
    android view roi
  • 如何在eclipse中创建一个spring boot项目
    这期内容当中小编将会给大家带来有关如何在eclipse中创建一个spring boot项目,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。spring Boot是由Pivotal团队提供的全新框架,其设计目...
    99+
    2023-05-31
    eclipse springboot spring boo
  • Springboot项目中如何实现异常处理自定义
    这期内容当中小编将会给大家带来有关Springboot项目中如何实现异常处理自定义,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景Springboot 默认把异常的处理集中到一个ModelAndView...
    99+
    2023-05-31
    springboot 异常处理 目中
  • 如何在Spring Boot中自定义一个HTTP消息转换器
    这篇文章将为大家详细讲解有关如何在Spring Boot中自定义一个HTTP消息转换器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在构建RESTful数据服务过程中,我们定义了contro...
    99+
    2023-05-30
    springboot http
  • Spring Boot下如何自定义Repository中的DAO方法
     环境配置介绍jdk 1.8, spring Boot 1.5.3.RELEASE, MySQL, Spring Data, JPA问题描述Spring Data提供了一套简单易用的DAO层抽象与封装,覆盖的CURD的基本功能,但...
    99+
    2023-05-31
    spring boot repository
  • 浅谈JAVA在项目中如何自定义异常
    JAVA项目中自定义异常 1.数据返回处理类 @Data public class R<T> implements Serializable { priv...
    99+
    2022-11-12
  • 在spring boot项目中如何配置日志管理
    这篇文章将为大家详细讲解有关在spring boot项目中如何配置日志管理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。spring Boot在所有内部日志中使用Commons Loggin...
    99+
    2023-05-31
    springboot 目中 日志
  • MongoDB数据库如何在spring boot项目中使用
    MongoDB数据库如何在spring boot项目中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。依赖<dependency> <groupId&g...
    99+
    2023-05-31
    springboot mongodb
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作