diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/pom.xml b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/pom.xml
new file mode 100644
index 00000000..065b0b88
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/pom.xml
@@ -0,0 +1,16 @@
+
+
+
+ lab-62-sofarpc-xml-demo
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-62-sofarpc-annotations-demo-user-rpc-service-api
+
+
+
+
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/api/UserRpcService.java b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/api/UserRpcService.java
new file mode 100644
index 00000000..b79c3f12
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/api/UserRpcService.java
@@ -0,0 +1,27 @@
+package cn.iocoder.springboot.lab62.rpc.api;
+
+import cn.iocoder.springboot.lab62.rpc.dto.UserAddDTO;
+import cn.iocoder.springboot.lab62.rpc.dto.UserDTO;
+
+/**
+ * 用户服务 RPC Service 接口
+ */
+public interface UserRpcService {
+
+ /**
+ * 根据指定用户编号,获得用户信息
+ *
+ * @param id 用户编号
+ * @return 用户信息
+ */
+ UserDTO get(Integer id);
+
+ /**
+ * 添加新用户,返回新添加的用户编号
+ *
+ * @param addDTO 添加的用户信息
+ * @return 用户编号
+ */
+ Integer add(UserAddDTO addDTO);
+
+}
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/dto/UserAddDTO.java b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/dto/UserAddDTO.java
new file mode 100644
index 00000000..f0840f1c
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/dto/UserAddDTO.java
@@ -0,0 +1,37 @@
+package cn.iocoder.springboot.lab62.rpc.dto;
+
+import java.io.Serializable;
+
+/**
+ * 用户添加 DTO
+ */
+public class UserAddDTO implements Serializable {
+
+ /**
+ * 昵称
+ */
+ private String name;
+ /**
+ * 性别
+ */
+ 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/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/dto/UserDTO.java b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/dto/UserDTO.java
new file mode 100644
index 00000000..d9b70074
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab62/rpc/dto/UserDTO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.springboot.lab62.rpc.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/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/pom.xml b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/pom.xml
new file mode 100644
index 00000000..1910695d
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ com.alipay.sofa
+ sofaboot-dependencies
+ 3.3.2
+
+ 4.0.0
+
+ lab-62-sofarpc-annotations-demo-user-rpc-service-consumer
+
+
+
+
+ cn.iocoder.springboot.labs
+ lab-62-sofarpc-annotations-demo-user-rpc-service-api
+ 1.0-SNAPSHOT
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ com.alipay.sofa
+ rpc-sofa-boot-starter
+
+
+
+
+ org.apache.curator
+ curator-framework
+
+
+
+
+
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/ConsumerApplication.java b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/ConsumerApplication.java
new file mode 100644
index 00000000..9e13db95
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/ConsumerApplication.java
@@ -0,0 +1,15 @@
+package cn.iocoder.springboot.lab62.rpc;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+//@ImportResource("classpath:sofarpc.xml")
+public class ConsumerApplication {
+
+ public static void main(String[] args) {
+ // 启动 Spring Boot 应用
+ SpringApplication.run(ConsumerApplication.class, args);;
+ }
+
+}
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java
new file mode 100644
index 00000000..ed29dd20
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java
@@ -0,0 +1,32 @@
+package cn.iocoder.springboot.lab62.rpc.controller;
+
+import cn.iocoder.springboot.lab62.rpc.api.UserRpcService;
+import cn.iocoder.springboot.lab62.rpc.dto.UserAddDTO;
+import cn.iocoder.springboot.lab62.rpc.dto.UserDTO;
+import com.alipay.sofa.runtime.api.annotation.SofaReference;
+import com.alipay.sofa.runtime.api.annotation.SofaReferenceBinding;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/user")
+public class UserController {
+
+ @SofaReference(binding = @SofaReferenceBinding(bindingType = "bolt"))
+ private UserRpcService userRpcService;
+
+ @GetMapping("/get")
+ public UserDTO get(@RequestParam("id") Integer id) {
+ return userRpcService.get(id);
+ }
+
+ @GetMapping("/add") // 为了方便测试,实际使用 @PostMapping
+ public Integer add(@RequestParam("name") String name,
+ @RequestParam("gender") Integer gender) {
+ UserAddDTO addDTO = new UserAddDTO().setName(name).setGender(gender);
+ return userRpcService.add(addDTO);
+ }
+
+}
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/resources/application.yaml b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/resources/application.yaml
new file mode 100644
index 00000000..f5299bd6
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-consumer/src/main/resources/application.yaml
@@ -0,0 +1,5 @@
+spring:
+ application:
+ name: user-service-consumer # 应用名
+
+com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFARPC 注解中心
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/pom.xml b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/pom.xml
new file mode 100644
index 00000000..2ce6d8da
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/pom.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ com.alipay.sofa
+ sofaboot-dependencies
+ 3.4.0
+
+ 4.0.0
+
+ lab-62-sofarpc-annotations-demo-user-rpc-service-provider
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cn.iocoder.springboot.labs
+ lab-62-sofarpc-annotations-demo-user-rpc-service-api
+ 1.0-SNAPSHOT
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+
+ com.alipay.sofa
+ rpc-sofa-boot-starter
+
+
+
+
+ org.apache.curator
+ curator-framework
+
+
+
+
+
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab62/rpc/ProviderApplication.java b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab62/rpc/ProviderApplication.java
new file mode 100644
index 00000000..89c2f0b7
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab62/rpc/ProviderApplication.java
@@ -0,0 +1,15 @@
+package cn.iocoder.springboot.lab62.rpc;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+//@ImportResource("classpath:sofarpc.xml")
+public class ProviderApplication {
+
+ public static void main(String[] args) {
+ // 启动 Spring Boot 应用
+ SpringApplication.run(ProviderApplication.class, args);
+ }
+
+}
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab62/rpc/service/UserRpcServiceImpl.java b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab62/rpc/service/UserRpcServiceImpl.java
new file mode 100644
index 00000000..35fee263
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab62/rpc/service/UserRpcServiceImpl.java
@@ -0,0 +1,27 @@
+package cn.iocoder.springboot.lab62.rpc.service;
+
+
+import cn.iocoder.springboot.lab62.rpc.api.UserRpcService;
+import cn.iocoder.springboot.lab62.rpc.dto.UserAddDTO;
+import cn.iocoder.springboot.lab62.rpc.dto.UserDTO;
+import com.alipay.sofa.runtime.api.annotation.SofaService;
+import com.alipay.sofa.runtime.api.annotation.SofaServiceBinding;
+import org.springframework.stereotype.Service;
+
+@Service
+@SofaService(bindings = @SofaServiceBinding(bindingType = "bolt"))
+public class UserRpcServiceImpl implements UserRpcService {
+
+ @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/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/resources/application.yaml b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/resources/application.yaml
new file mode 100644
index 00000000..9e8d2d35
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/lab-62-sofarpc-annotations-demo-user-rpc-service-provider/src/main/resources/application.yaml
@@ -0,0 +1,5 @@
+spring:
+ application:
+ name: user-service-provider # 应用名
+
+com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFA RPC 注册中心
diff --git a/lab-62/lab-62-sofarpc-annotations-demo/pom.xml b/lab-62/lab-62-sofarpc-annotations-demo/pom.xml
new file mode 100644
index 00000000..00a8fb60
--- /dev/null
+++ b/lab-62/lab-62-sofarpc-annotations-demo/pom.xml
@@ -0,0 +1,21 @@
+
+
+
+ lab-62
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-62-sofarpc-annotations-demo
+ pom
+
+
+ lab-62-sofarpc-annotations-demo-user-rpc-service-api
+ lab-62-sofarpc-annotations-demo-user-rpc-service-provider
+ lab-62-sofarpc-annotations-demo-user-rpc-service-consumer
+
+
+
diff --git a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java
index 93cc320c..406f30ce 100644
--- a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java
+++ b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java
@@ -1,12 +1,10 @@
package cn.iocoder.springboot.lab62.rpc.controller;
import cn.iocoder.springboot.lab62.rpc.api.UserRpcService;
+import cn.iocoder.springboot.lab62.rpc.dto.UserAddDTO;
import cn.iocoder.springboot.lab62.rpc.dto.UserDTO;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
@@ -20,4 +18,11 @@ public class UserController {
return userRpcService.get(id);
}
+ @GetMapping("/add") // 为了方便测试,实际使用 @PostMapping
+ public Integer add(@RequestParam("name") String name,
+ @RequestParam("gender") Integer gender) {
+ UserAddDTO addDTO = new UserAddDTO().setName(name).setGender(gender);
+ return userRpcService.add(addDTO);
+ }
+
}
diff --git a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/application.yaml b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/application.yaml
index f856006a..f5299bd6 100644
--- a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/application.yaml
+++ b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/application.yaml
@@ -2,4 +2,4 @@ spring:
application:
name: user-service-consumer # 应用名
-com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFA RPC 注解中心
+com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFARPC 注解中心
diff --git a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/pom.xml b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/pom.xml
index 91819670..933e1148 100644
--- a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/pom.xml
+++ b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/pom.xml
@@ -8,7 +8,7 @@
com.alipay.sofa
sofaboot-dependencies
- 3.3.2
+ 3.4.0
4.0.0
@@ -33,7 +33,7 @@
1.0-SNAPSHOT
-
+
org.springframework.boot
spring-boot-starter
diff --git a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/application.yaml b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/application.yaml
index 11f12a3d..9e8d2d35 100644
--- a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/application.yaml
+++ b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/application.yaml
@@ -2,4 +2,4 @@ spring:
application:
name: user-service-provider # 应用名
-com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFA RPC 注解中心
+com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFA RPC 注册中心
diff --git a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/sofarpc.xml b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/sofarpc.xml
index 3e96aebd..44c6492c 100644
--- a/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/sofarpc.xml
+++ b/lab-62/lab-62-sofarpc-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-provider/src/main/resources/sofarpc.xml
@@ -10,7 +10,3 @@
-
-
-
-
diff --git a/lab-62/pom.xml b/lab-62/pom.xml
index 3353b5b2..ada99022 100644
--- a/lab-62/pom.xml
+++ b/lab-62/pom.xml
@@ -14,6 +14,7 @@
lab-62-sofarpc-xml-demo
+ lab-62-sofarpc-annotations-demo
diff --git a/lab-62/《》.md b/lab-62/《》.md
new file mode 100644
index 00000000..e69de29b
diff --git a/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/pom.xml b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/pom.xml
new file mode 100644
index 00000000..e6ac7a40
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ com.alipay.sofa
+ sofaboot-dependencies
+ 3.3.2
+
+ 4.0.0
+
+ lab-63-sofarpc-xml-demo-user-rpc-service-consumer
+
+
+
+
+ cn.iocoder.springboot.labs
+ lab-63-sofarpc-xml-demo-user-rpc-service-api
+ 1.0-SNAPSHOT
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ com.alipay.sofa
+ rpc-sofa-boot-starter
+
+
+
+
+ org.apache.curator
+ curator-framework
+
+
+
+
+
diff --git a/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/ConsumerApplication.java b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/ConsumerApplication.java
new file mode 100644
index 00000000..fe0da3c2
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/ConsumerApplication.java
@@ -0,0 +1,16 @@
+package cn.iocoder.springboot.lab63.rpc;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ImportResource;
+
+@SpringBootApplication
+@ImportResource("classpath:sofarpc.xml")
+public class ConsumerApplication {
+
+ public static void main(String[] args) {
+ // 启动 Spring Boot 应用
+ SpringApplication.run(ConsumerApplication.class, args);;
+ }
+
+}
diff --git a/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java
new file mode 100644
index 00000000..38221966
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/java/cn/iocoder/springboot/lab62/rpc/controller/UserController.java
@@ -0,0 +1,28 @@
+package cn.iocoder.springboot.lab63.rpc.controller;
+
+import cn.iocoder.springboot.lab63.rpc.api.UserRpcService;
+import cn.iocoder.springboot.lab63.rpc.dto.UserAddDTO;
+import cn.iocoder.springboot.lab63.rpc.dto.UserDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/user")
+public class UserController {
+
+ @Autowired
+ private UserRpcService userRpcService;
+
+ @GetMapping("/get")
+ public UserDTO get(@RequestParam("id") Integer id) {
+ return userRpcService.get(id);
+ }
+
+ @GetMapping("/add") // 为了方便测试,实际使用 @PostMapping
+ public Integer add(@RequestParam("name") String name,
+ @RequestParam("gender") Integer gender) {
+ UserAddDTO addDTO = new UserAddDTO().setName(name).setGender(gender);
+ return userRpcService.add(addDTO);
+ }
+
+}
diff --git a/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/application.yaml b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/application.yaml
new file mode 100644
index 00000000..f5299bd6
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/application.yaml
@@ -0,0 +1,5 @@
+spring:
+ application:
+ name: user-service-consumer # 应用名
+
+com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFARPC 注解中心
diff --git a/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/sofarpc.xml b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/sofarpc.xml
new file mode 100644
index 00000000..65513a89
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-62-sofarpc-xml-demo-user-rpc-service-consumer/src/main/resources/sofarpc.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/pom.xml b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/pom.xml
new file mode 100644
index 00000000..76a90d3f
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/pom.xml
@@ -0,0 +1,14 @@
+
+
+
+ lab-63-motan-xml-demo
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-63-motan-xml-demo-user-rpc-service-api
+
+
diff --git a/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/api/UserRpcService.java b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/api/UserRpcService.java
new file mode 100644
index 00000000..15878518
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/api/UserRpcService.java
@@ -0,0 +1,27 @@
+package cn.iocoder.springboot.lab63.rpc.api;
+
+import cn.iocoder.springboot.lab63.rpc.dto.UserAddDTO;
+import cn.iocoder.springboot.lab63.rpc.dto.UserDTO;
+
+/**
+ * 用户服务 RPC Service 接口
+ */
+public interface UserRpcService {
+
+ /**
+ * 根据指定用户编号,获得用户信息
+ *
+ * @param id 用户编号
+ * @return 用户信息
+ */
+ UserDTO get(Integer id);
+
+ /**
+ * 添加新用户,返回新添加的用户编号
+ *
+ * @param addDTO 添加的用户信息
+ * @return 用户编号
+ */
+ Integer add(UserAddDTO addDTO);
+
+}
diff --git a/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/dto/UserAddDTO.java b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/dto/UserAddDTO.java
new file mode 100644
index 00000000..29229761
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/dto/UserAddDTO.java
@@ -0,0 +1,37 @@
+package cn.iocoder.springboot.lab63.rpc.dto;
+
+import java.io.Serializable;
+
+/**
+ * 用户添加 DTO
+ */
+public class UserAddDTO implements Serializable {
+
+ /**
+ * 昵称
+ */
+ private String name;
+ /**
+ * 性别
+ */
+ 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/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/dto/UserDTO.java b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/dto/UserDTO.java
new file mode 100644
index 00000000..b6941d1e
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-api/src/main/java/cn/iocoder/springboot/lab63/rpc/dto/UserDTO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.springboot.lab63.rpc.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/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/pom.xml b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/pom.xml
new file mode 100644
index 00000000..f8b6509f
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/pom.xml
@@ -0,0 +1,77 @@
+
+
+
+ lab-63-motan-xml-demo
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-63-motan-xml-demo-user-rpc-service-provider
+
+
+ 1.8
+ 1.8
+ 2.2.4.RELEASE
+ 1.1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ ${spring.boot.version}
+ pom
+ import
+
+
+
+
+
+
+
+ cn.iocoder.springboot.labs
+ lab-63-motan-xml-demo-user-rpc-service-api
+ 1.0-SNAPSHOT
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+
+ com.weibo
+ motan-core
+ ${moton.version}
+
+
+ com.weibo
+ motan-transport-netty
+ ${moton.version}
+
+
+ com.weibo
+ motan-registry-zookeeper
+ ${moton.version}
+
+
+ com.weibo
+ motan-springsupport
+ ${moton.version}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab63/rpc/ProviderApplication.java b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab63/rpc/ProviderApplication.java
new file mode 100644
index 00000000..c16b2d49
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab63/rpc/ProviderApplication.java
@@ -0,0 +1,16 @@
+package cn.iocoder.springboot.lab63.rpc;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ImportResource;
+
+@SpringBootApplication
+@ImportResource("classpath:sofarpc.xml")
+public class ProviderApplication {
+
+ public static void main(String[] args) {
+ // 启动 Spring Boot 应用
+ SpringApplication.run(ProviderApplication.class, args);
+ }
+
+}
diff --git a/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab63/rpc/service/UserRpcServiceImpl.java b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab63/rpc/service/UserRpcServiceImpl.java
new file mode 100644
index 00000000..303f8da1
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/java/cn/iocoder/springboot/lab63/rpc/service/UserRpcServiceImpl.java
@@ -0,0 +1,24 @@
+package cn.iocoder.springboot.lab63.rpc.service;
+
+
+import cn.iocoder.springboot.lab63.rpc.api.UserRpcService;
+import cn.iocoder.springboot.lab63.rpc.dto.UserAddDTO;
+import cn.iocoder.springboot.lab63.rpc.dto.UserDTO;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserRpcServiceImpl implements UserRpcService {
+
+ @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/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/application.yaml b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/application.yaml
new file mode 100644
index 00000000..9e8d2d35
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/application.yaml
@@ -0,0 +1,5 @@
+spring:
+ application:
+ name: user-service-provider # 应用名
+
+com.alipay.sofa.rpc.registry.address: zookeeper://127.0.0.1:2181 # SOFA RPC 注册中心
diff --git a/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/motan.xml b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/motan.xml
new file mode 100644
index 00000000..e69de29b
diff --git a/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/sofarpc.xml b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/sofarpc.xml
new file mode 100644
index 00000000..e4d0a31e
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/lab-63-motan-xml-demo-user-rpc-service-provider/src/main/resources/sofarpc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/lab-63/lab-63-motan-xml-demo/pom.xml b/lab-63/lab-63-motan-xml-demo/pom.xml
new file mode 100644
index 00000000..e6722f96
--- /dev/null
+++ b/lab-63/lab-63-motan-xml-demo/pom.xml
@@ -0,0 +1,20 @@
+
+
+
+ lab-63
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-63-motan-xml-demo
+ pom
+
+ lab-63-motan-xml-demo-user-rpc-service-api
+ lab-63-motan-xml-demo-user-rpc-service-provider
+
+
+
+
diff --git a/lab-63/pom.xml b/lab-63/pom.xml
new file mode 100644
index 00000000..95efef5c
--- /dev/null
+++ b/lab-63/pom.xml
@@ -0,0 +1,18 @@
+
+
+
+ labs-parent
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-63
+
+
+ lab-63-motan-xml-demo
+
+
+
diff --git a/pom.xml b/pom.xml
index cd8d9a06..f78d3213 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,6 +72,8 @@
+ lab-62
+ lab-63
@@ -100,7 +102,7 @@
- lab-62
+