From 5da2d060a9741eaa994f3d1146d6309755d715cc Mon Sep 17 00:00:00 2001
From: YunaiV <>
Date: Mon, 17 Feb 2020 20:31:00 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20spring=20cloud=20alibaba?=
=?UTF-8?q?=20nacos=20=E9=85=8D=E7=BD=AE=E4=B8=AD=E5=BF=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 1 +
.../target/classes/application.yaml | 12 ---
.../pom.xml | 2 +
.../nacosdemo/config/OrderProperties.java | 6 --
.../nacosdemo/controller/DemoController.java | 11 +++
.../DemoEnvironmentChangeListener.java | 26 ++++++
.../target/classes/bootstrap.yaml | 13 +++
.../pom.xml | 70 ++++++++++++++++
.../labx5/nacosdemo/DemoApplication.java | 13 +++
.../nacosdemo/config/OrderProperties.java | 53 ++++++++++++
.../nacosdemo/controller/DemoController.java | 42 ++++++++++
.../src/main/resources/application.yaml | 10 +++
.../src/main/resources/bootstrap.yaml | 13 +++
.../pom.xml | 81 +++++++++++++++++++
.../labx5/nacosdemo/DemoApplication.java | 13 +++
.../nacosdemo/controller/DemoController.java | 22 +++++
.../JasyptEnvironmentChangeListener.java | 45 +++++++++++
.../src/main/resources/bootstrap.yaml | 13 +++
.../labx5/nacosdemo/JasyptTest.java | 40 +++++++++
.../pom.xml | 64 +++++++++++++++
.../labx5/nacosdemo/DemoApplication.java | 20 +++++
.../src/main/resources/bootstrap.yaml | 32 ++++++++
labx-05/pom.xml | 3 +
23 files changed, 587 insertions(+), 18 deletions(-)
delete mode 100644 labx-03/labx-03-sc-feign-demo04-provider/target/classes/application.yaml
create mode 100644 labx-05/labx-05-sca-nacos-config-auto-refresh/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/DemoEnvironmentChangeListener.java
create mode 100644 labx-05/labx-05-sca-nacos-config-auto-refresh/target/classes/bootstrap.yaml
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-actuator/pom.xml
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/config/OrderProperties.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/application.yaml
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-actuator/src/main/resources/bootstrap.yaml
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-jasypt/pom.xml
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/controller/DemoController.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/listener/JasyptEnvironmentChangeListener.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-jasypt/src/main/resources/bootstrap.yaml
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-jasypt/src/test/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/JasyptTest.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-multi/pom.xml
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-multi/src/main/java/cn/iocoder/springcloudalibaba/labx5/nacosdemo/DemoApplication.java
create mode 100644 labx-05/labx-05-sca-nacos-config-demo-multi/src/main/resources/bootstrap.yaml
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