diff --git a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-api/pom.xml b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-api/pom.xml
index eb8d95bb..4cf73ba5 100644
--- a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-api/pom.xml
+++ b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-api/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- labx-07-sca-dubbo-demo01
+ labx-07-sca-dubbo-demo02
cn.iocoder.springboot.labs
1.0-SNAPSHOT
diff --git a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-consumer/pom.xml b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-consumer/pom.xml
index dc5b6576..56bcfdc7 100644
--- a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-consumer/pom.xml
+++ b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-consumer/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- labx-07-sca-dubbo-demo01
+ labx-07-sca-dubbo-demo02
cn.iocoder.springboot.labs
1.0-SNAPSHOT
diff --git a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml
index df1102db..ccff8b61 100644
--- a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml
+++ b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- labx-07-sca-dubbo-demo01
+ labx-07-sca-dubbo-demo02
cn.iocoder.springboot.labs
1.0-SNAPSHOT
diff --git a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-springmvc/pom.xml b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-springmvc/pom.xml
index 032c49ba..76029b64 100644
--- a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-springmvc/pom.xml
+++ b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-springmvc/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- labx-07-sca-dubbo-demo01
+ labx-07-sca-dubbo-demo02
cn.iocoder.springboot.labs
1.0-SNAPSHOT
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/pom.xml b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/pom.xml
new file mode 100644
index 00000000..2624b537
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ labx-07-sca-dubbo-demo03-validation
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ labx-07-sca-dubbo-demo03-api
+
+
+
+
+ javax.validation
+ validation-api
+ 2.0.1.Final
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 6.0.18.Final
+
+
+ org.glassfish
+ javax.el
+ 3.0.1-b11
+
+
+
+
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/api/UserService.java b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/api/UserService.java
new file mode 100644
index 00000000..374d6640
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/api/UserService.java
@@ -0,0 +1,32 @@
+package cn.iocoder.springcloudalibaba.labx7.api;
+
+import cn.iocoder.springcloudalibaba.labx7.dto.UserAddDTO;
+import cn.iocoder.springcloudalibaba.labx7.dto.UserDTO;
+
+import javax.validation.ConstraintViolationException;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 用户服务 RPC Service 接口
+ */
+public interface UserService {
+
+ /**
+ * 根据指定用户编号,获得用户信息
+ *
+ * @param id 用户编号
+ * @return 用户信息
+ */
+ UserDTO get(@NotNull(message = "用户编号不能为空") Integer id)
+ throws ConstraintViolationException;;
+
+ /**
+ * 添加新用户,返回新添加的用户编号
+ *
+ * @param addDTO 添加的用户信息
+ * @return 用户编号
+ */
+ Integer add(UserAddDTO addDTO)
+ throws ConstraintViolationException;;
+
+}
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/dto/UserAddDTO.java b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/dto/UserAddDTO.java
new file mode 100644
index 00000000..dd01bb7a
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/dto/UserAddDTO.java
@@ -0,0 +1,44 @@
+package cn.iocoder.springcloudalibaba.labx7.dto;
+
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 用户添加 DTO
+ */
+public class UserAddDTO implements Serializable {
+
+ /**
+ * 昵称
+ */
+ @NotEmpty(message = "昵称不能为空")
+ @Length(min = 5, max = 16, message = "账号长度为 5-16 位")
+ private String name;
+ /**
+ * 性别
+ */
+ @NotNull(message = "性别不能为空")
+ private Integer gender;
+
+ public String getName() {
+ return name;
+ }
+
+ public UserAddDTO setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public UserAddDTO setGender(Integer gender) {
+ this.gender = gender;
+ return this;
+ }
+
+}
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/dto/UserDTO.java b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/dto/UserDTO.java
new file mode 100644
index 00000000..17a0b457
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-api/src/main/java/cn/iocoder/springcloudalibaba/labx7/dto/UserDTO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.springcloudalibaba.labx7.dto;
+
+import java.io.Serializable;
+
+/**
+ * 用户信息 DTO
+ */
+public class UserDTO implements Serializable {
+
+ /**
+ * 用户编号
+ */
+ private Integer id;
+ /**
+ * 昵称
+ */
+ private String name;
+ /**
+ * 性别
+ */
+ private Integer gender;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public UserDTO setId(Integer id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public UserDTO setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public UserDTO setGender(Integer gender) {
+ this.gender = gender;
+ return this;
+ }
+}
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/pom.xml b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/pom.xml
new file mode 100644
index 00000000..ac907efc
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/pom.xml
@@ -0,0 +1,79 @@
+
+
+
+ labx-07-sca-dubbo-demo03-validation
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ labx-07-sca-dubbo-demo03-consumer
+
+
+ 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
+
+
+
+
+
+
+
+ cn.iocoder.springboot.labs
+ labx-07-sca-dubbo-demo03-api
+ 1.0-SNAPSHOT
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-dubbo
+
+
+
+
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/java/cn/iocoder/springcloudalibaba/labx7/consumerdemo/ConsumerApplication.java b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/java/cn/iocoder/springcloudalibaba/labx7/consumerdemo/ConsumerApplication.java
new file mode 100644
index 00000000..d27e5af4
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/java/cn/iocoder/springcloudalibaba/labx7/consumerdemo/ConsumerApplication.java
@@ -0,0 +1,13 @@
+package cn.iocoder.springcloudalibaba.labx7.consumerdemo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ConsumerApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ConsumerApplication.class);
+ }
+
+}
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/java/cn/iocoder/springcloudalibaba/labx7/consumerdemo/controller/UserController.java b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/java/cn/iocoder/springcloudalibaba/labx7/consumerdemo/controller/UserController.java
new file mode 100644
index 00000000..eee8a86f
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/java/cn/iocoder/springcloudalibaba/labx7/consumerdemo/controller/UserController.java
@@ -0,0 +1,26 @@
+package cn.iocoder.springcloudalibaba.labx7.consumerdemo.controller;
+
+import cn.iocoder.springcloudalibaba.labx7.api.UserService;
+import cn.iocoder.springcloudalibaba.labx7.dto.UserAddDTO;
+import cn.iocoder.springcloudalibaba.labx7.dto.UserDTO;
+import org.apache.dubbo.config.annotation.Reference;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/user")
+public class UserController {
+
+ @Reference(protocol = "dubbo", version = "1.0.0", validation = "false")
+ private UserService userService;
+
+ @GetMapping("/get")
+ public UserDTO get(@RequestParam("id") Integer id) {
+ return userService.get(id);
+ }
+
+ @PostMapping("/add")
+ public Integer add(UserAddDTO addDTO) {
+ return userService.add(addDTO);
+ }
+
+}
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/resources/application.yaml b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/resources/application.yaml
new file mode 100644
index 00000000..ca377859
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-consumer/src/main/resources/application.yaml
@@ -0,0 +1,17 @@
+spring:
+ application:
+ name: demo-consumer
+ cloud:
+ # Nacos 作为注册中心的配置项
+ nacos:
+ discovery:
+ server-addr: 127.0.0.1:8848
+
+# Dubbo 配置项,对应 DubboConfigurationProperties 类
+dubbo:
+ # Dubbo 服务注册中心配置,对应 RegistryConfig 类
+ registry:
+ address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址
+ # Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类
+ cloud:
+ subscribed-services: demo-provider # 设置订阅的应用列表,默认为 * 订阅所有应用。
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/pom.xml b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/pom.xml
new file mode 100644
index 00000000..a5cfe696
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ labx-07-sca-dubbo-demo03-validation
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ labx-07-sca-dubbo-demo03-provider
+
+
+ 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
+
+
+
+
+
+
+
+ cn.iocoder.springboot.labs
+ labx-07-sca-dubbo-demo03-api
+ 1.0-SNAPSHOT
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-dubbo
+
+
+
+
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/java/cn/iocoder/springcloudalibaba/labx7/providerdemo/ProviderApplication.java b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/java/cn/iocoder/springcloudalibaba/labx7/providerdemo/ProviderApplication.java
new file mode 100644
index 00000000..454251b5
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/java/cn/iocoder/springcloudalibaba/labx7/providerdemo/ProviderApplication.java
@@ -0,0 +1,13 @@
+package cn.iocoder.springcloudalibaba.labx7.providerdemo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ProviderApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ProviderApplication.class);
+ }
+
+}
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/java/cn/iocoder/springcloudalibaba/labx7/providerdemo/service/UserServiceImpl.java b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/java/cn/iocoder/springcloudalibaba/labx7/providerdemo/service/UserServiceImpl.java
new file mode 100644
index 00000000..578f96f8
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/java/cn/iocoder/springcloudalibaba/labx7/providerdemo/service/UserServiceImpl.java
@@ -0,0 +1,22 @@
+package cn.iocoder.springcloudalibaba.labx7.providerdemo.service;
+
+import cn.iocoder.springcloudalibaba.labx7.api.UserService;
+import cn.iocoder.springcloudalibaba.labx7.dto.UserAddDTO;
+import cn.iocoder.springcloudalibaba.labx7.dto.UserDTO;
+
+@org.apache.dubbo.config.annotation.Service(protocol = "dubbo", version = "1.0.0", validation = "true")
+public class UserServiceImpl implements UserService {
+
+ @Override
+ public UserDTO get(Integer id) {
+ return new UserDTO().setId(id)
+ .setName("没有昵称:" + id)
+ .setGender(id % 2 + 1); // 1 - 男;2 - 女
+ }
+
+ @Override
+ public Integer add(UserAddDTO addDTO) {
+ return (int) (System.currentTimeMillis() / 1000); // 嘿嘿,随便返回一个 id
+ }
+
+}
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/resources/application.yaml b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/resources/application.yaml
new file mode 100644
index 00000000..a9d67ac9
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/labx-07-sca-dubbo-demo03-provider/src/main/resources/application.yaml
@@ -0,0 +1,24 @@
+spring:
+ application:
+ name: demo-provider
+ cloud:
+ # Nacos 作为注册中心的配置项
+ nacos:
+ discovery:
+ server-addr: 127.0.0.1:8848 # Nacos 服务器地址
+
+# Dubbo 配置项,对应 DubboConfigurationProperties 类
+dubbo:
+ scan:
+ base-packages: cn.iocoder.springcloudalibaba.labx7.providerdemo.service # 指定 Dubbo 服务实现类的扫描基准包
+ # Dubbo 服务暴露的协议配置,对应 ProtocolConfig Map
+ protocols:
+ dubbo:
+ name: dubbo # 协议名称
+ port: -1 # 协议端口,-1 表示自增端口,从 20880 开始
+ # Dubbo 服务注册中心配置,对应 RegistryConfig 类
+ registry:
+ address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址
+ # Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类
+ cloud:
+ subscribed-services: '' # 设置订阅的应用列表,默认为 * 订阅所有应用。
diff --git a/labx-07/labx-07-sca-dubbo-demo03-validation/pom.xml b/labx-07/labx-07-sca-dubbo-demo03-validation/pom.xml
new file mode 100644
index 00000000..65ac25d9
--- /dev/null
+++ b/labx-07/labx-07-sca-dubbo-demo03-validation/pom.xml
@@ -0,0 +1,20 @@
+
+
+
+ labx-07
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ labx-07-sca-dubbo-demo03-validation
+ pom
+
+ labx-07-sca-dubbo-demo03-api
+ labx-07-sca-dubbo-demo03-provider
+ labx-07-sca-dubbo-demo03-consumer
+
+
+
diff --git a/labx-07/pom.xml b/labx-07/pom.xml
index 84167ec6..537be0d7 100644
--- a/labx-07/pom.xml
+++ b/labx-07/pom.xml
@@ -14,6 +14,7 @@
labx-07-sca-dubbo-demo01
labx-07-sca-dubbo-demo02
+ labx-07-sca-dubbo-demo03-validation