diff --git a/.gitignore b/.gitignore index 3b047d6..dfa8fad 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,5 @@ bin/ # Environment .env .env.local +/kenaito-conf-springboot2-client-demo/target/classes/META-INF/spring.factories +/kenaito-conf-springboot2-client-demo/target/classes/application.properties diff --git a/kenaito-conf-springboot2-client-demo/src/main/java/cn/odboy/demo/ConfigController.java b/kenaito-conf-springboot2-client-demo/src/main/java/cn/odboy/demo/ConfigController.java index db18b03..d35c051 100644 --- a/kenaito-conf-springboot2-client-demo/src/main/java/cn/odboy/demo/ConfigController.java +++ b/kenaito-conf-springboot2-client-demo/src/main/java/cn/odboy/demo/ConfigController.java @@ -10,29 +10,29 @@ import java.util.Map; @RestController public class ConfigController { - @Value("${app.name:unknown}") - private String appName; + @Value("${database.host:unknown}") + private String host; - @Value("${app.version:unknown}") - private String appVersion; + @Value("${database.port:unknown}") + private String port; - @Value("${db.url:unknown}") - private String dbUrl; + @Value("${database.name:unknown}") + private String name; - @Value("${db.username:unknown}") - private String dbUsername; + @Value("${database.user:unknown}") + private String user; - @Value("${custom.config1:unknown}") - private String customConfig1; + @Value("${database.password:unknown}") + private String password; @GetMapping("/") public Map index() { Map result = new HashMap<>(); - result.put("appName", appName); - result.put("appVersion", appVersion); - result.put("dbUrl", dbUrl); - result.put("dbUsername", dbUsername); - result.put("customConfig1", customConfig1); + result.put("host", host); + result.put("port", port); + result.put("name", name); + result.put("user", user); + result.put("password", password); return result; } diff --git a/kenaito-conf-springboot2-client-demo/src/main/resources/application.properties b/kenaito-conf-springboot2-client-demo/src/main/resources/application.properties index 3deb3f7..2a42c88 100644 --- a/kenaito-conf-springboot2-client-demo/src/main/resources/application.properties +++ b/kenaito-conf-springboot2-client-demo/src/main/resources/application.properties @@ -7,13 +7,15 @@ app.version=1.0.0 # Kenaito Config Center kenaito.config.baseUrl=http://localhost:8080 -kenaito.config.appName=demo -kenaito.config.profile=dev +kenaito.config.appName=kenaito-springboot-demo +kenaito.config.profile=daily kenaito.config.version=latest kenaito.config.token= kenaito.config.sync-interval-seconds=30 # Local configs (will be overridden by remote if exists) -db.url=jdbc:mysql://localhost:3306/local_db -db.username=local_user -custom.config1=local_value +database.host=192.168.1.1 +database.port=8888 +database.name=xxxx +database.user=xxxx +database.password=xxxxxxxx diff --git a/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java b/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java index 64b2b26..cadbe7a 100644 --- a/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java +++ b/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java @@ -245,7 +245,7 @@ public class ConfigcenterContext { env = getProperty("kenaito.config.profile", "dev"); Validate.notBlank(env, "[kenaito.config.profile] is required"); - setApiBaseUrl(getAnyProperty("kenaito.config.baseUrl", "kenaito.config.base.url")); + setApiBaseUrl(getAnyProperty("kenaito.config.baseUrl", "kenaito.config.baseUrl")); version = getProperty("kenaito.config.version", "latest"); ignoreGlobal = getBoolean("kenaito.config.global-ignore", false); @@ -269,7 +269,7 @@ public class ConfigcenterContext { } public void setApiBaseUrl(String apiBaseUrl) { - Validate.notBlank(apiBaseUrl, "[kenaito.config.base.url] is required"); + Validate.notBlank(apiBaseUrl, "[kenaito.config.baseUrl] is required"); String[] urls = apiBaseUrl.split(",|;"); this.apiBaseUrls = new String[urls.length]; for (int i = 0; i < urls.length; i++) { diff --git a/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java b/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java index 0a08cd0..6f86fc6 100644 --- a/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java +++ b/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java @@ -26,6 +26,19 @@ public class KenaitoEnvironmentInitializer implements EnvironmentPostProcessor { public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { if (ccContext.isRemoteEnabled() && !ccContext.isProcessed()) { Properties properties = new Properties(); + // Extract kenaito.config.* properties from Spring Environment + environment.getPropertySources().forEach(ps -> { + if (ps instanceof org.springframework.core.env.EnumerablePropertySource) { + for (String key : ((org.springframework.core.env.EnumerablePropertySource) ps).getPropertyNames()) { + if (key.startsWith("kenaito.config.") || key.equals("spring.application.name")) { + String val = environment.getProperty(key); + if (val != null) { + properties.setProperty(key, val); + } + } + } + } + }); ccContext.init(properties, true); ccContext.mergeRemoteProperties(properties); PropertiesPropertySource propertySource = new PropertiesPropertySource(ConfigcenterContext.MANAGER_PROPERTY_SOURCE, properties); diff --git a/kenaito-conf-springboot3-client-demo/src/main/resources/application.properties b/kenaito-conf-springboot3-client-demo/src/main/resources/application.properties index 8b250bf..a485b1e 100644 --- a/kenaito-conf-springboot3-client-demo/src/main/resources/application.properties +++ b/kenaito-conf-springboot3-client-demo/src/main/resources/application.properties @@ -1,5 +1,5 @@ # Server -server.port=8082 +server.port=8081 # Application app.name=kenaito-conf-springboot3-client-demo @@ -7,13 +7,15 @@ app.version=1.0.0 # Kenaito Config Center kenaito.config.baseUrl=http://localhost:8080 -kenaito.config.appName=demo -kenaito.config.profile=dev +kenaito.config.appName=kenaito-springboot-demo +kenaito.config.profile=daily kenaito.config.version=latest kenaito.config.token= kenaito.config.sync-interval-seconds=30 # Local configs (will be overridden by remote if exists) -db.url=jdbc:mysql://localhost:3306/local_db -db.username=local_user -custom.config1=local_value +database.host=192.168.1.1 +database.port=8888 +database.name=xxxx +database.user=xxxx +database.password=xxxxxxxx diff --git a/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java b/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java index 5a989e9..c31625b 100644 --- a/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java +++ b/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/ConfigcenterContext.java @@ -116,7 +116,7 @@ public class ConfigcenterContext { throw new IllegalArgumentException("[kenaito.config.profile] is required"); } - setApiBaseUrl(getProperty("kenaito.config.baseUrl", getProperty("kenaito.config.base.url", ""))); + setApiBaseUrl(getProperty("kenaito.config.baseUrl", getProperty("kenaito.config.baseUrl", ""))); version = getProperty("kenaito.config.version", "latest"); ignoreGlobal = Boolean.parseBoolean(getProperty("kenaito.config.global-ignore", "false")); @@ -145,7 +145,7 @@ public class ConfigcenterContext { public void setApiBaseUrl(String apiBaseUrl) { if (apiBaseUrl == null || apiBaseUrl.isBlank()) { - throw new IllegalArgumentException("[kenaito.config.base.url] is required"); + throw new IllegalArgumentException("[kenaito.config.baseUrl] is required"); } String[] urls = apiBaseUrl.split(",|;"); diff --git a/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java b/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java index 64fd75c..0525aa7 100644 --- a/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java +++ b/kenaito-conf-springboot3-client/src/main/java/cn/odboy/confcenter/springboot/KenaitoEnvironmentInitializer.java @@ -27,6 +27,19 @@ public class KenaitoEnvironmentInitializer implements EnvironmentPostProcessor { if (ccContext.isRemoteEnabled() && !ccContext.isProcessed()) { Properties properties = new Properties(); ccContext.setEnvironment((StandardEnvironment) environment); + // Extract kenaito.config.* properties from Spring Environment + environment.getPropertySources().forEach(ps -> { + if (ps instanceof org.springframework.core.env.EnumerablePropertySource) { + for (String key : ((org.springframework.core.env.EnumerablePropertySource) ps).getPropertyNames()) { + if (key.startsWith("kenaito.config.") || key.equals("spring.application.name")) { + String val = environment.getProperty(key); + if (val != null) { + properties.setProperty(key, val); + } + } + } + } + }); ccContext.init(properties, true); ccContext.mergeRemoteProperties(properties); PropertiesPropertySource propertySource = new PropertiesPropertySource(ConfigcenterContext.MANAGER_PROPERTY_SOURCE, properties);