springboot 配置资源统一管理
2017-03-21 16:09
344 查看
在一个springboot的项目中创建一个加载资源的类
LoadPropertiesConfig
这样就实现了用远程资源覆盖本地资源的情况
测试代码
本地配置文件
远程配置文件
用以上代码测试,当没有加载到远程资源的时候访问showName
返回的是ceshi当资源被覆盖之后就会显示name
LoadPropertiesConfig
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import org.slf4j.Logger; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.core.Ordered; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertiesPropertySource; public class LoadPropertiesConfig implements EnvironmentPostProcessor, Ordered { private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(LoadPropertiesConfig.class); @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { //此处可以http方式 到配置服务器拉取一堆公共配置+本项目个性配置的json串,拼到Properties里 Properties properties = new Properties(); try { properties.load( new FileInputStream(new File("D:\\service\\demo-parents\\springboot-app\\application.properties"))); } catch (FileNotFoundException e) { LOG.error("error message", e); } catch (IOException e) { LOG.error("error message", e); } MutablePropertySources propertySources = environment.getPropertySources(); //addLast 结合下面的 getOrder() 保证顺序 读者也可以试试其他姿势的加载顺序 propertySources.addLast(new PropertiesPropertySource("thirdEnv", properties)); } @Override public int getOrder() { // +1 保证application.propertie里的内容能覆盖掉本配置文件中默认的 // 如果不想被覆盖 可以去掉 +1 或者 -1 试试 return Integer.MIN_VALUE; } }
这样就实现了用远程资源覆盖本地资源的情况
测试代码
@SpringBootApplication @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 类PropertiesCheckController.java的实现描述:验证自定义配置文件 * * @author xupeng 2017年3月16日 下午4:04:24 */ @RestController public class PropertiesCheckController { @Value("${name}") private String name; @RequestMapping("/showName") public String showName() { return name; } }
本地配置文件
name=ceshi
远程配置文件
name=name
用以上代码测试,当没有加载到远程资源的时候访问showName
返回的是ceshi当资源被覆盖之后就会显示name
相关文章推荐
- SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)
- spring-boot 加载本地静态资源文件路径配置
- spring boot 关于资源的一般配置(二)
- spring基础:快速入门spring cloud(6):统一配置管理之spring cloud config
- springboot下配置resource路径下的静态资源
- 第二十二章 springboot + archaius + consul(配置管理)
- Spring Boot多数据源及其事务管理配置方法
- 第四章 Spring.Net 如何管理您的类___统一资源访问接口
- spring boot日志管理配置
- spring boot 配置静态资源
- spring 配置统一管理,代码可以直接运行。包含所有类和配置文件。
- spring-boot 加载本地静态资源文件路径配置
- spring boot 加载本地静态资源文件路径配置
- 第四章 Spring.Net 如何管理您的类___统一资源访问接口
- spring-boot配置外部静态资源的方法
- spring-boot 加载本地静态资源文件路径配置
- spring-boot 加载本地静态资源文件路径配置
- 嗡汤圆的Spring Cloud自学(PART.1):统一配置管理(Cloud-config)
- spring boot配置mybatis和事务管理
- Springboot 之 静态资源路径配置