diff --git a/README.md b/README.md index f2525392..3811208c 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ ## Spring Cloud Alibaba 全家桶 +* 《芋道 Spring Cloud Alibaba 介绍》 * [《芋道 Spring Cloud Alibaba 注册中心 Nacos 入门》](http://www.iocoder.cn/Spring-Cloud-Alibaba/Nacos-Discovery/?github) 对应 [labx-01](https://github.com/YunaiV/SpringBoot-Labs/tree/master/labx-01) * 《芋道 Spring Cloud Alibaba 服务调用 Dubbo 入门》 * [《芋道 Spring Cloud Alibaba 服务容错 Sentinel 入门》](http://www.iocoder.cn/Spring-Cloud-Alibaba/Sentinel/?github) 对应 [labx-04](https://github.com/YunaiV/SpringBoot-Labs/tree/master/labx-04) diff --git a/labx-03/labx-03-sc-feign-demo04-provider/target/classes/application.yaml b/labx-03/labx-03-sc-feign-demo04-provider/target/classes/application.yaml deleted file mode 100644 index 53225aa4..00000000 --- a/labx-03/labx-03-sc-feign-demo04-provider/target/classes/application.yaml +++ /dev/null @@ -1,12 +0,0 @@ -spring: - application: - name: demo-provider # Spring 应用名 - cloud: - nacos: - # Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类 - discovery: - server-addr: 127.0.0.1:8848 # Nacos 服务器地址 - -server: - port: ${random.int[10000,19999]} # 服务器端口。默认为 8080 -# port: 18080 # 服务器端口。默认为 8080 diff --git a/labx-05/labx-05-sca-nacos-config-auto-refresh/pom.xml b/labx-05/labx-05-sca-nacos-config-auto-refresh/pom.xml index 1efbb616..07cb3dbd 100644 --- a/labx-05/labx-05-sca-nacos-config-auto-refresh/pom.xml +++ b/labx-05/labx-05-sca-nacos-config-auto-refresh/pom.xml @@ -12,6 +12,8 @@ labx-05-sca-nacos-config-auto-refresh + 1.8 + 1.8 2.2.4.RELEASE Hoxton.SR1 2.2.0.RELEASE diff --git a/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java b/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java index 0dde305d..d62ac63d 100644 --- a/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java +++ b/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java @@ -4,7 +4,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component -//@NacosConfigurationProperties(prefix = "order", dataId = "${nacos.config.data-id}", type = ConfigType.YAML) @ConfigurationProperties(prefix = "order") public class OrderProperties { @@ -18,11 +17,6 @@ public class OrderProperties { */ private Integer createFrequencySeconds; -// /** -// * 配置描述 -// */ -// private String desc; - public Integer getPayTimeoutSeconds() { return payTimeoutSeconds; } diff --git a/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java b/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java index 88b19ab7..6222190f 100644 --- a/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java +++ b/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java @@ -2,8 +2,11 @@ package cn.iocoder.springcloudalibaba.labx5.nacosdemo.controller; import cn.iocoder.springcloudalibaba.labx5.nacosdemo.config.OrderProperties; import com.alibaba.fastjson.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -12,6 +15,7 @@ import java.util.Map; @RestController @RequestMapping("/demo") +@RefreshScope public class DemoController { @Autowired @@ -39,4 +43,11 @@ public class DemoController { .fluentPut("createFrequencySeconds", createFrequencySeconds); } + private Logger logger = LoggerFactory.getLogger(getClass()); + + @GetMapping("/logger") + public void logger() { + logger.debug("[logger][测试一下]"); + } + } diff --git a/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/DemoEnvironmentChangeListener.java b/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/DemoEnvironmentChangeListener.java new file mode 100644 index 00000000..9496af0e --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/DemoEnvironmentChangeListener.java @@ -0,0 +1,26 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo.listener; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.context.environment.EnvironmentChangeEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.stereotype.Component; + +@Component +public class DemoEnvironmentChangeListener implements ApplicationListener { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private ConfigurableEnvironment environment; + + @Override + public void onApplicationEvent(EnvironmentChangeEvent event) { + for (String key : event.getKeys()) { + logger.info("[onApplicationEvent][key({}) 最新 value 为 {}]", key, environment.getProperty(key)); + } + } + +} diff --git a/labx-05/labx-05-sca-nacos-config-auto-refresh/target/classes/bootstrap.yaml b/labx-05/labx-05-sca-nacos-config-auto-refresh/target/classes/bootstrap.yaml new file mode 100644 index 00000000..fb5bb9ec --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-auto-refresh/target/classes/bootstrap.yaml @@ -0,0 +1,13 @@ +spring: + application: + name: demo-application + + cloud: + nacos: + # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类 + config: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + namespace: # 使用的 Nacos 的命名空间,默认为 null + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + name: # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name + file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties diff --git a/labx-05/labx-05-sca-nacos-config-demo-actuator/pom.xml b/labx-05/labx-05-sca-nacos-config-demo-actuator/pom.xml new file mode 100644 index 00000000..f70fe876 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-actuator/pom.xml @@ -0,0 +1,70 @@ + + + + labx-05 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-05-sca-nacos-config-demo-actuator + + + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + diff --git a/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java new file mode 100644 index 00000000..e57a51b9 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java @@ -0,0 +1,13 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class); + } + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java new file mode 100644 index 00000000..0dde305d --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java @@ -0,0 +1,53 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +//@NacosConfigurationProperties(prefix = "order", dataId = "${nacos.config.data-id}", type = ConfigType.YAML) +@ConfigurationProperties(prefix = "order") +public class OrderProperties { + + /** + * 订单支付超时时长,单位:秒。 + */ + private Integer payTimeoutSeconds; + + /** + * 订单创建频率,单位:秒 + */ + private Integer createFrequencySeconds; + +// /** +// * 配置描述 +// */ +// private String desc; + + public Integer getPayTimeoutSeconds() { + return payTimeoutSeconds; + } + + public OrderProperties setPayTimeoutSeconds(Integer payTimeoutSeconds) { + this.payTimeoutSeconds = payTimeoutSeconds; + return this; + } + + public Integer getCreateFrequencySeconds() { + return createFrequencySeconds; + } + + public OrderProperties setCreateFrequencySeconds(Integer createFrequencySeconds) { + this.createFrequencySeconds = createFrequencySeconds; + return this; + } + +// public String getDesc() { +// return desc; +// } +// +// public OrderProperties setDesc(String desc) { +// this.desc = desc; +// return this; +// } + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java new file mode 100644 index 00000000..a5d470ae --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java @@ -0,0 +1,42 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo.controller; + +import cn.iocoder.springcloudalibaba.labx5.nacosdemo.config.OrderProperties; +import com.alibaba.fastjson.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +@RestController +@RequestMapping("/demo") +public class DemoController { + + @Autowired + private OrderProperties orderProperties; + + /** + * 测试 @ConfigurationProperties 注解的配置属性类 + */ + @GetMapping("/test01") + public OrderProperties test01() { + return orderProperties; + } + + @Value(value = "${order.pay-timeout-seconds}") // @NacosValue(value = "${order.pay-timeout-seconds}") + private Integer payTimeoutSeconds; + @Value(value = "${order.create-frequency-seconds}") // @NacosValue(value = "${order.create-frequency-seconds}") + private Integer createFrequencySeconds; + + /** + * 测试 @Value 注解的属性 + */ + @GetMapping("/test02") + public Map test02() { + return new JSONObject().fluentPut("payTimeoutSeconds", payTimeoutSeconds) + .fluentPut("createFrequencySeconds", createFrequencySeconds); + } + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/application.yaml b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/application.yaml new file mode 100644 index 00000000..0b69ce7f --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/application.yaml @@ -0,0 +1,10 @@ +management: + endpoint: + # Health 端点配置项,对应 HealthProperties 配置类 + health: + show-details: ALWAYS # 何时显示完整的健康信息。默认为 NEVER 都不展示。可选 WHEN_AUTHORIZED 当经过授权的用户;可选 ALWAYS 总是展示。 + endpoints: + # Actuator HTTP 配置项,对应 WebEndpointProperties 配置类 + web: + exposure: + include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 diff --git a/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/bootstrap.yaml b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/bootstrap.yaml new file mode 100644 index 00000000..fb5bb9ec --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/bootstrap.yaml @@ -0,0 +1,13 @@ +spring: + application: + name: demo-application + + cloud: + nacos: + # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类 + config: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + namespace: # 使用的 Nacos 的命名空间,默认为 null + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + name: # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name + file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties diff --git a/labx-05/labx-05-sca-nacos-config-demo-jasypt/pom.xml b/labx-05/labx-05-sca-nacos-config-demo-jasypt/pom.xml new file mode 100644 index 00000000..4ad20d4f --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-jasypt/pom.xml @@ -0,0 +1,81 @@ + + + + labx-05 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-05-sca-nacos-config-demo-jasypt + + + 1.8 + 1.8 + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + 3.0.2 + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java new file mode 100644 index 00000000..e57a51b9 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java @@ -0,0 +1,13 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class); + } + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java new file mode 100644 index 00000000..da8361c8 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java @@ -0,0 +1,22 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo.controller; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo") +@RefreshScope +public class DemoController { + + @Value("${xxx-password:}") + private String xxxPassword; + + @GetMapping("/test") + public String test() { + return xxxPassword; + } + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/JasyptEnvironmentChangeListener.java b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/JasyptEnvironmentChangeListener.java new file mode 100644 index 00000000..c4980ea8 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/JasyptEnvironmentChangeListener.java @@ -0,0 +1,45 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo.listener; + +import org.apache.commons.lang3.StringUtils; +import org.jasypt.encryption.StringEncryptor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.context.environment.EnvironmentChangeEvent; +import org.springframework.cloud.context.environment.EnvironmentManager; +import org.springframework.context.ApplicationListener; +import org.springframework.stereotype.Component; + +@Component +public class JasyptEnvironmentChangeListener implements ApplicationListener { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + // Environment 管理器,可以实现配置项的获取和修改 + @Autowired + private EnvironmentManager environmentManager; + + // Jasypt 加密器,可以对配置项进行加密和加密 + @Autowired + private StringEncryptor encryptor; + + @Override + public void onApplicationEvent(EnvironmentChangeEvent event) { + for (String key : event.getKeys()) { + // 获得 value + Object valueObj = environmentManager.getProperty(key); + if (!(valueObj instanceof String)) { + continue; + } + String value = (String) valueObj; + // 判断 value 是否为加密。如果是,则进行解密 + if (value.startsWith("ENC(") && value.endsWith(")")) { + value = encryptor.decrypt(StringUtils.substringBetween(value, "ENC(", ")")); + logger.info("[onApplicationEvent][key({}) 解密后为 {}]", key, value); + // 设置到 Environment 中 + environmentManager.setProperty(key, value); + } + } + } + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/resources/bootstrap.yaml b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/resources/bootstrap.yaml new file mode 100644 index 00000000..657fb353 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/resources/bootstrap.yaml @@ -0,0 +1,13 @@ +spring: + application: + name: demo-application-jasypt + + cloud: + nacos: + # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类 + config: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + namespace: # 使用的 Nacos 的命名空间,默认为 null + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + name: # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name + file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties diff --git a/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/test/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/JasyptTest.java b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/test/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/JasyptTest.java new file mode 100644 index 00000000..4df1b581 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-jasypt/src/test/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/JasyptTest.java @@ -0,0 +1,40 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo; + +import org.jasypt.encryption.StringEncryptor; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class JasyptTest { + + @Autowired + private StringEncryptor encryptor; + + @Test + public void encode() { + // 第一个加密 + String password = "woshimima"; + System.out.println(encryptor.encrypt(password)); + + // 第二个加密 + password = "bushimima"; + System.out.println(encryptor.encrypt(password)); + } + + @Value("${xxx-password:}") + private String xxxPassword; + + @Test + public void print() { + System.out.println(xxxPassword); + } + +// @Value("${jasypt.encryptor.password}") +// private String password; + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-multi/pom.xml b/labx-05/labx-05-sca-nacos-config-demo-multi/pom.xml new file mode 100644 index 00000000..74e7ca67 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-multi/pom.xml @@ -0,0 +1,64 @@ + + + + labx-05 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-05-sca-nacos-config-demo-multi + + + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + diff --git a/labx-05/labx-05-sca-nacos-config-demo-multi/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java b/labx-05/labx-05-sca-nacos-config-demo-multi/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java new file mode 100644 index 00000000..a7619a08 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-multi/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java @@ -0,0 +1,20 @@ +package cn.iocoder.springcloudalibaba.labx5.nacosdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.Environment; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + // 启动 Spring Boot 应用 + ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args); + + // 查看 Environment + Environment environment = context.getEnvironment(); + System.out.println(environment); + } + +} diff --git a/labx-05/labx-05-sca-nacos-config-demo-multi/src/main/resources/bootstrap.yaml b/labx-05/labx-05-sca-nacos-config-demo-multi/src/main/resources/bootstrap.yaml new file mode 100644 index 00000000..2f20c1f8 --- /dev/null +++ b/labx-05/labx-05-sca-nacos-config-demo-multi/src/main/resources/bootstrap.yaml @@ -0,0 +1,32 @@ +spring: + application: + name: demo-application + + cloud: + nacos: + # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类 + config: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + namespace: # 使用的 Nacos 的命名空间,默认为 null + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name + file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties + # 拓展配置集数组,对应 Config 数组 + extension-configs: + - data-id: extension-dataId-01.yaml + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + refresh: true # 是否自动刷新配置,默认为 false + - data-id: extension-dataId-02.yaml + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + refresh: true # 是否自动刷新配置,默认为 false + # 共享配置集数组,对应 Config 数组 + shared-configs: + - data-id: shared-dataId-01.yaml + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + refresh: true # 是否自动刷新配置,默认为 false + - data-id: shared-dataId-02.yaml + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + refresh: true # 是否自动刷新配置,默认为 false + + profiles: + active: dev # 设置开启的 Profiles diff --git a/labx-05/pom.xml b/labx-05/pom.xml index d7df87bc..aa337fce 100644 --- a/labx-05/pom.xml +++ b/labx-05/pom.xml @@ -15,6 +15,9 @@ labx-05-sca-nacos-config-demo labx-05-sca-nacos-config-demo-profiles labx-05-sca-nacos-config-auto-refresh + labx-05-sca-nacos-config-demo-jasypt + labx-05-sca-nacos-config-demo-actuator + labx-05-sca-nacos-config-demo-multi