spring boot2.1读取 apollo 配置中心2

第二篇:创建spring boot2.1项目

引用apollo的java客户端jar包

        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.1.2</version>
        </dependency>

 

这里直接介绍使用注解的方式读取配置,其它方式的介绍,请查看官网:https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

我们通过上篇创建几个配置:

 

 创建一个配置文件的Bean.

@Value表示具体的配置项,可以设置默认值。

@ApolloConfig(namespace)可以匹配apollo的命名空间,如不写,则指application命名空间。

@ApolloConfigChangeListener(namespace)更新时调用的方法, 如不写,则指application命名空间。

public class ApplicationConfigBean {

    @Value("${TimeOut:200}")
    private int timeOut;
    private String connectionString;

    @ApolloConfig
    private Config config;

    @ApolloConfig("TEST1.ConfigCenter")
    private  Config configCenterConfig;

    @PostConstruct
    void initialize(){
        System.out.println("timeOut is " + timeOut);
        System.out.println("connectionString is " +connectionString);
        System.out.println("Keys for config" + config.getPropertyNames());
        System.out.println("Keys for configCenterConfig is " +configCenterConfig.getPropertyNames());
    }

    public int getTimeOut() {
        return timeOut;
    }

    public String getConnectionString() {
        return connectionString;
    }

    @Value("${ConnectionString}")
    public void setConnectionString(String connectionString) {
        this.connectionString = connectionString;
    }

    @ApolloConfigChangeListener
    private  void someChangeHandler(ConfigChangeEvent changeEvent){
        System.out.println("[someChangeHandler] changes for namespace: " + changeEvent.getNamespace());
        if (changeEvent.isChanged("TimeOut")){
            refreshTimeOut();
        }

        if (changeEvent.isChanged("ConnectionString")){
            setConnectionString(changeEvent.getChange("ConnectionString").getNewValue());
        }
    }

    @ApolloConfigChangeListener("TEST1.ConfigCenter")
    private  void configCenterChangeHandler(ConfigChangeEvent changeEvent){
        System.out.println("[configCenterChangeHandler] for namespace:" + changeEvent.getNamespace());

        for (String key: changeEvent.changedKeys()){
            ConfigChange change = changeEvent.getChange(key);
            System.out.println("[configCenterChangeHandler] Change Key: "+ change.getPropertyName() +"   oldValue:" + change.getOldValue() +" newValue:" + change.getNewValue() );
        }
    }

    private void refreshTimeOut() {
        timeOut = config.getIntProperty("TimeOut", timeOut);
        System.out.println("Refresh timeout is " + timeOut);
    }
}

 

@EnableApolloConfig 启用apollo配置。

@Configuration
@EnableApolloConfig
public class ApplicationConfig {

    @Bean
    public  ApplicationConfigBean applicationConfigBean(){
        return  new ApplicationConfigBean();
    }
}

 

然后,需要指定我们的所使用的app.id 在appication.properties中

app.id=**

最后,我们要指定运行时环境和configserver的地址:

 

这里需要注意我们写的是-Dapollo.configService   而不是meta。

因为我们是直接访问的config service,没有访问eureka,  如果访问的是eureka:那我们访问的是configservice注册到eureka的地址,但这个地址是docker的内部地址,我们外部是访问不到的。所有这个要注意

 

运行一下,就可以看到配置信息的输出了:

 

转载于:https://www.cnblogs.com/hankuikui/p/10026391.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值