spring boot 集成 superdiamond
2016-05-04 00:00
288 查看
摘要: spring boot很好用,superdiamond是同事推荐的配置管理服务,也不错,两者怎么集成呢?
spring boot用spring新的 Enviroment 类来管理属性配置。Super diamond (https://github.com/melin/super-diamond) 默认给的是用 以下配置
这样的配置导致superdiamond的配置信息是优先级最低,不能起到集中管理,覆盖打包到jar中的application.properties的目的。如果设置PropertySourcesPlaceHoderConfigurer 的 localOverride = true 的话,那么superdiamond的优先级又太高。总之我希望superdiamond的配置优先级要低于环境变量和jvm properties,但是要高于application properties。那就不要用PropertySourcesPlaceHoderConfigurer了,直接把propertie插入到Enviroment里面就好了。
spring boot用spring新的 Enviroment 类来管理属性配置。Super diamond (https://github.com/melin/super-diamond) 默认给的是用 以下配置
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> <property name="properties" ref="propertiesConfiguration" /> </bean> <bean id="propertiesConfiguration" class="com.github.diamond.client.PropertiesConfigurationFactoryBean"> <constructor-arg index="0" value="localhost" /> <constructor-arg index="1" value="5001" /> <constructor-arg index="2" value="test" /> <constructor-arg index="3" value="development" /> </bean>
这样的配置导致superdiamond的配置信息是优先级最低,不能起到集中管理,覆盖打包到jar中的application.properties的目的。如果设置PropertySourcesPlaceHoderConfigurer 的 localOverride = true 的话,那么superdiamond的优先级又太高。总之我希望superdiamond的配置优先级要低于环境变量和jvm properties,但是要高于application properties。那就不要用PropertySourcesPlaceHoderConfigurer了,直接把propertie插入到Enviroment里面就好了。
SpringApplication app = new SpringApplication(Application.class); app.addInitializers((ApplicationContextInitializer<ConfigurableApplicationContext>) applicationContext -> { ConfigurableEnvironment environment = applicationContext.getEnvironment(); if (Arrays.stream(environment.getActiveProfiles()) .filter(x -> "superdiamond".equals(x)).findAny().isPresent()) { try { loadSuperDiamond(environment); } catch (Exception e) { e.printStackTrace(); } } }); app.run(args); } static void loadSuperDiamond(ConfigurableEnvironment enviroment) throws Exception { PropertiesConfigurationFactoryBean propertiesConfigurationFactoryBean = new PropertiesConfigurationFactoryBean( enviroment.getProperty("superdiamond.host"), Integer.parseInt(enviroment.getProperty("superdiamond.port")), enviroment.getProperty("superdiamond.proj", "superdiamond.proj"), enviroment.getProperty("superdiamond.profile", "superdiamond.profile"), enviroment.getProperty 3ff0 ("superdiamond.modules", "superdiamond.modules") ); Properties properties = propertiesConfigurationFactoryBean.getObject(); enviroment.getPropertySources().addAfter("random", new PropertiesPropertySource("superdiamond", properties)); }
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 电脑硬件分析Ultimate Boot CD v4.1.1 下载
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- springmvc 发送ajax出现中文乱码的解决方法汇总
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao