日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

apollo java客户端_携程配置中心Apollo的Java客户端API的使用

發布時間:2023/12/10 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apollo java客户端_携程配置中心Apollo的Java客户端API的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、SpringBoot集成

1.發布配置信息

設置本機為DEV環境:Linux在/opt/settings/server.properties增加配置env=DEV,windows在c:\opt\settings\server.properties

圖1

在apollo portal上新建項目后,默認就有了application命名空間。在DEV環境下新建一個名為test_namespace的命名空間。

在application上發布:spring.applicaton.name=apollo_demo,server.port=9000。

在test_name上發布:name=name1, value=value2。

2.引入依賴

org.springframework.boot

spring-boot-stater

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

${lombok.version}

provided

com.ctrip.framework.apollo

apollo-client

${apollo.version}

3.項目配置

在項目的application.properties(applicaiton.yml)或者/META-INF/app.properties填入app.id=appId(在apollo-portal上新建項目時填寫的appId,表示獲取的是那個配置項目的配置信息)。

resources目錄下新建apollo-env.properties,填寫各個環境的meta server地址:

圖2

3) 或者不在項目配置apollo-env.properties,而是直接在application.properties指定apollo.meta=ip:port的方式來執行需要讀取配置的的服務

使用application命名空間的配置信息來啟動SpringBoot應用 入口方法增加@EnableApolloConfig注解

@SpringBootApplication

@EnableApolloConfig

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

如果不使用@EnableApolloConfig注解,可以在application.properties里面配置apollo.bootstrap.enabled=true,效果一樣。 使用apollo.bootstrap.namespaces = application,test_namespace可以指定命名空間。

啟動項目:

圖3

可以看到應用在啟動前從配置中心獲取配置信息來啟動應用。 `@EnableApolloConfig`默認是從application命名空間獲取配置的,相當于`@EnableApolloConfig("application")`.。

4.獲取配置

application命名空間配置信息 java bean:

@Component

@EnableApolloConfig

@Getter

@Setter

@ToString

public class AppNamespace {

@Value("${spring.application.name:}")

private String name;

@Value("${server.port:}")

private String value;

}

java bean:

@Component

@EnableApolloConfig("CASE.test_namespace")

@Getter

@Setter

@ToString

public class TestNamespace {

@Value("${name}")

private String name;

@Value("${value}")

private String value;

}

使用:

@RestController

public class DemoController {

@Autowired

private TestNamespace demo;

@Autowired

private AppNamespace application;

@ApolloConfig

private Config appConfig;

@ApolloConfig("CASE.test_namespace")

private Config testConfig1;

private Config testConfig2 = ConfigService.getConfig("CASE.test_namespace");

}

以上兩種方式獲取配置信息的值,會跟配置中心的更改同步(1秒內);還可以使用@ConfigurationProperties來獲取配置信息,但這種方式不會同步更新,需要額外的編碼配置才能實現,具體查看官方文檔。

5.其他

@ApolloJsonValue注解,作用相當于@Value,將JSON字符串轉成對象。

@ApolloConfigChangeListener注解::

@ApolloConfigChangeListener

private void someOnChange(ConfigChangeEvent changeEvent) {

//update injected value of batch if it is changed in Apollo

if (changeEvent.isChanged("key")) {

System.out.println(config.getIntProperty("key", ""));

}

}

@ApolloConfigChangeListener相當于@ApolloConfigChangeListener("application")

相當于:

Config config = ConfigService.getAppConfig();

config.addChangeListener(new ConfigChangeListener() {

@Override

public void onChange(ConfigChangeEvent changeEvent) {

System.out.println("Changes for namespace " + changeEvent.getNamespace());

for (String key : changeEvent.changedKeys()) {

ConfigChange change = changeEvent.getChange(key);

System.out.println(String.format("Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));

}

}

});

如果同時以兩種方式綁定changeListener的方式,只有ConfigService實例的監聽器會生效。

2.其他

總結

以上是生活随笔為你收集整理的apollo java客户端_携程配置中心Apollo的Java客户端API的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。