首页 > 编程知识 正文

springboot 动态配置

时间:2023-05-04 16:55:07 阅读:273114 作者:4324

 

pom新增依赖:

 

 <!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client -->

<dependency>

    <groupId>com.ctrip.framework.apollo</groupId>

    <artifactId>apollo-client</artifactId>

    <version>1.5.1</version>

</dependency>

 

2、使用@EnableApolloConfig使能appollo配置,可以在入口类增加注解,或配置类

如果有多个namespace,可以直接标明如@EnableApolloConfig({"TEST1.COMMON", "application"}) 

 

@EnableApolloConfig

@SpringBootApplication

public class App {

public static void main(String[] args) throws Exception {

SpringApplication.run(App.class, args);

}

 

}

 

@EnableApolloConfig

@ConfigurationProperties(prefix = "app")

public class AppProperties {

 

3、增加监听类,使用EnvironmentChangeEvent或RefreshScope

如果有多个namespace,可以直接标明如:@ApolloConfigChangeListener({"TEST1.COMMON", "application"}) 

@Service

public class AppolloConfigListener implements ApplicationContextAware {

 

private ApplicationContext applicationContext;

@ApolloConfigChangeListener

   private void onChange(ConfigChangeEvent changeEvent) {

this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys()));

   }

 

@Override

  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

    this.applicationContext = applicationContext;

  }

 

}

 

在application.properties上增加一下配置:项目id和appollo服务器地址

app.id=myappid

# set apollo meta server address, adjust to actual address if necessary

apollo.meta=http://192.168.2.229:8080

 

然后打开appollo管理页面(http://192.168.2.229:8070/)地址使用你的服务器地址,新增项目,配置内容。

 

 

 

 

 

 

使用文本的方式,把原来application.properties的需要动态配置属性复制过来就可以了,然后发布。

Appollo支持spring原来的注解方式,所以不管原来使用@ConfigurationProperties(prefix = "app")或者@Value("${spring.application.name}")方式,可以不用改变,甚至配置都不用去掉,配置值会直接被Appollo服务器上配置的值覆盖。

   题外话:使用@ConfigurationProperties注解如果希望使用@Autowired自动注入bean,可以在   @Configuration 类上加上
@EnableConfigurationProperties({ AppProperties.class }),当然也可以新建获取方法实例化bean。

2、通过namespace我们可以做到区别配置,通过集群可以做到同一个应用不同部署不同配置。apollo.cluster=xxx 和app.id=xxx一起配置不配置情况就是默认集群。

以上是最简单的配置方式之一,其他配置可以参考官方提供的demo。

 

参考:

https://blog.csdn.net/lovelichao12/article/details/81013257https://gitee.com/nobodyiam/apollo/wikis/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97?sort_id=1296991#%E4%BA%8Cmaven-dependency

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。