您现在的位置是:首页 > 文章详情

Spring cloud配置客户端(三)

日期:2019-03-13点击:503

覆盖远程配置属性

默认情况,Spring Cloud是允许覆盖的,spring.cloud.config.allowOverride=true
通过程序启动参数,调整这个值为"false"

--spring.cloud.config.allowOverride=true

启动后,重新Postman发送POST请求,调整spring.application.name值为"spring-cloud-new"

重点:如果spring.application.name不写的话,默认的话是项目名

自定义Bootstrap配置

  1. 创建META-INF/spring.factories文件{类似于Spring boot 自定义Starter}
  2. 自定义Bootstrap配置Configurtion
package com.segmentfault.springcloudlesson1.bootstrap; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; import java.util.HashMap; import java.util.Map; /** * bootstrap 配置bean */ @Configuration public class MyConfiguration implements ApplicationContextInitializer { @Override public void initialize(ConfigurableApplicationContext applicationContext) { //从ConfigurableApplicationContext获取ConfigurableEnvironment实例 ConfigurableEnvironment environment = applicationContext.getEnvironment(); //获取PropertySources MutablePropertySources propertySources = environment.getPropertySources(); //定义一个新的 propertySource,并放置在首位 propertySources.addFirst(createPropertySource()); } private PropertySource createPropertySource() { Map<String, Object> source = new HashMap<>(); source.put("name", "shuai"); PropertySource propertySource = new MapPropertySource("my-property-source", source); return propertySource; } }

三. 配置MEAT-INF/spring.factories文件,关联Key

org.springframework.cloud.bootstrapConfiguration= \ com.segmentfault.springcloudlesson2.bootstrap.Myconfiguration

自定义Bootstrap配置属性源

  1. 实现PropertySourceLocator
package com.segmentfault.springcloudlesson1.bootstrap; import org.springframework.cloud.bootstrap.config.PropertySourceLocator; import org.springframework.core.env.*; import java.util.HashMap; import java.util.Map; /** * 自定义{@link PropertySourceLocator}实现 */ public class MyPropertySourceLocator implements PropertySourceLocator { @Override public PropertySource<?> locate(Environment environment) { if (environment instanceof ConfigurableEnvironment) { ConfigurableEnvironment configurableEnvironment = ConfigurableEnvironment.class.cast(environment); //获取PropertySources MutablePropertySources propertySources = configurableEnvironment.getPropertySources(); //定义一个新的 propertySource,并放置在首位 propertySources.addFirst(createPropertySource()); } return null; } private PropertySource createPropertySource() { Map<String, Object> source = new HashMap<>(); source.put("spring.application.name", "shuaishuai"); //设置名称和来源 PropertySource propertySource = new MapPropertySource("over-bootstrap", source); return propertySource; } }
  1. 配置META-INF/spring.factories
org.springframework.cloud.bootstrapConfiguration= \ com.segmentfault.springcloudlesson1.bootstrap.MyConfiguration,\ com.segmentfault.springcloudlesson1.bootstrap.MyPropertySourceLocator
原文链接:https://yq.aliyun.com/articles/693617
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章