diff --git a/lab-60/lab-60-soul-spring-cloud-demo/pom.xml b/lab-60/lab-60-soul-spring-cloud-demo/pom.xml
new file mode 100644
index 00000000..381161c6
--- /dev/null
+++ b/lab-60/lab-60-soul-spring-cloud-demo/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ lab-60
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-60-soul-spring-cloud-demo
+
+
+ 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-discovery
+
+
+
+
+ org.dromara
+ soul-client-springcloud
+ 2.1.2-RELEASE
+
+
+
+
diff --git a/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/DemoApplication.java b/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/DemoApplication.java
new file mode 100644
index 00000000..6f4e8a3c
--- /dev/null
+++ b/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/DemoApplication.java
@@ -0,0 +1,13 @@
+package cn.iocoder.springcloud.lab60;
+
+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, args);
+ }
+
+}
diff --git a/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/controller/UserController.java b/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/controller/UserController.java
new file mode 100644
index 00000000..edb1623c
--- /dev/null
+++ b/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/controller/UserController.java
@@ -0,0 +1,28 @@
+package cn.iocoder.springcloud.lab60.controller;
+
+import cn.iocoder.springcloud.lab60.dto.UserCreateDTO;
+import org.dromara.soul.client.common.annotation.SoulClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/user")
+public class UserController {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @GetMapping("/get")
+ @SoulClient(path = "/user/get", desc = "获得用户详细")
+ public String getUser(@RequestParam("id") Integer id) {
+ return "DEMO:" + id;
+ }
+
+ @PostMapping("/create")
+ @SoulClient(path = "/user/create", desc = "创建用户")
+ public Integer createUser(@RequestBody UserCreateDTO createDTO) {
+ logger.info("[createUser][username({}) password({})]", createDTO.getNickname(), createDTO.getGender());
+ return 1;
+ }
+
+}
diff --git a/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/dto/UserCreateDTO.java b/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/dto/UserCreateDTO.java
new file mode 100644
index 00000000..99bff222
--- /dev/null
+++ b/lab-60/lab-60-soul-spring-cloud-demo/src/main/java/cn/iocoder/springcloud/lab60/dto/UserCreateDTO.java
@@ -0,0 +1,34 @@
+package cn.iocoder.springcloud.lab60.dto;
+
+/**
+ * 用户创建 DTO
+ */
+public class UserCreateDTO {
+
+ /**
+ * 昵称
+ */
+ private String nickname;
+ /**
+ * 性别
+ */
+ private Integer gender;
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public UserCreateDTO setNickname(String nickname) {
+ this.nickname = nickname;
+ return this;
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public UserCreateDTO setGender(Integer gender) {
+ this.gender = gender;
+ return this;
+ }
+}
diff --git a/lab-60/lab-60-soul-spring-cloud-demo/src/main/resources/application.yaml b/lab-60/lab-60-soul-spring-cloud-demo/src/main/resources/application.yaml
new file mode 100644
index 00000000..9b694186
--- /dev/null
+++ b/lab-60/lab-60-soul-spring-cloud-demo/src/main/resources/application.yaml
@@ -0,0 +1,16 @@
+spring:
+ application:
+ name: sc-user-service # Spring 应用名
+ cloud:
+ nacos:
+ # Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类
+ discovery:
+ server-addr: 127.0.0.1:8848 # Nacos 服务器地址
+
+soul:
+ # Soul 针对 SpringMVC 的配置项,对应 SoulSpringCloudConfig 配置类
+ springcloud:
+ admin-url: http://127.0.0.1:9095 # Soul Admin 地址
+ context-path: /sc-user-service-api # 设置在 Soul 网关的路由前缀,例如说 /order、/product 等等。
+ # 后续,网关会根据该 context-path 来进行路由
+ app-name: sc-user-service # 应用名。未配置情况下,默认使用 `spring.application.name` 配置项
diff --git a/lab-60/pom.xml b/lab-60/pom.xml
index 11a7490f..f7e81598 100644
--- a/lab-60/pom.xml
+++ b/lab-60/pom.xml
@@ -15,6 +15,7 @@
lab-60-soul-dubbo-demo
lab-60-soul-spring-boot-demo
+ lab-60-soul-spring-cloud-demo