From 1594abe71260df1f58666a3037c480277a953e85 Mon Sep 17 00:00:00 2001 From: heqingpan Date: Tue, 27 Aug 2024 09:14:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=86=E5=88=AB=E5=9F=BA?= =?UTF-8?q?=E4=BA=8Espringboot-v2=E5=92=8Cspring-v3=E7=9A=84spring-cloud?= =?UTF-8?q?=E6=A0=B7=E4=BE=8B=20#48?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdk-examples/java/spring-cloud-v2/.gitignore | 3 + sdk-examples/java/spring-cloud-v2/README.md | 24 ++++++ .../java/spring-cloud-v2/demo-api/.gitignore | 2 + .../java/spring-cloud-v2/demo-api/pom.xml | 83 ++++++++++++++++++ .../src/main/java/com/rnacos/demo/App.java | 16 ++++ .../rnacos/demo/client/DemoServiceClient.java | 17 ++++ .../rnacos/demo/foo/api/FooController.java | 41 +++++++++ .../src/main/resources/application.yml | 12 +++ .../spring-cloud-v2/demo-common/.gitignore | 2 + .../java/spring-cloud-v2/demo-common/pom.xml | 30 +++++++ .../src/main/java/com/rnacos/demo/Result.java | 54 ++++++++++++ .../java/com/rnacos/demo/foo/DemoService.java | 5 ++ .../com/rnacos/demo/foo/SayHelloRequest.java | 24 ++++++ .../com/rnacos/demo/foo/SayHelloResponse.java | 25 ++++++ .../java/com/rnacos/demo/package-info.java | 1 + .../spring-cloud-v2/demo-service/.gitignore | 2 + .../java/spring-cloud-v2/demo-service/pom.xml | 75 +++++++++++++++++ .../src/main/java/com/rnacos/demo/App.java | 16 ++++ .../foo/service/impl/DemoServiceImpl.java | 26 ++++++ .../src/main/resources/application.yml | 12 +++ sdk-examples/java/spring-cloud-v2/pom.xml | 62 ++++++++++++++ sdk-examples/java/spring-cloud-v3/.gitignore | 3 + sdk-examples/java/spring-cloud-v3/README.md | 24 ++++++ .../java/spring-cloud-v3/demo-api/.gitignore | 2 + .../java/spring-cloud-v3/demo-api/pom.xml | 84 +++++++++++++++++++ .../src/main/java/com/rnacos/demo/App.java | 16 ++++ .../rnacos/demo/client/DemoServiceClient.java | 17 ++++ .../rnacos/demo/foo/api/FooController.java | 41 +++++++++ .../src/main/resources/application.yml | 12 +++ .../spring-cloud-v3/demo-common/.gitignore | 2 + .../java/spring-cloud-v3/demo-common/pom.xml | 30 +++++++ .../src/main/java/com/rnacos/demo/Result.java | 54 ++++++++++++ .../java/com/rnacos/demo/foo/DemoService.java | 5 ++ .../com/rnacos/demo/foo/SayHelloRequest.java | 24 ++++++ .../com/rnacos/demo/foo/SayHelloResponse.java | 25 ++++++ .../java/com/rnacos/demo/package-info.java | 1 + .../spring-cloud-v3/demo-service/.gitignore | 2 + .../java/spring-cloud-v3/demo-service/pom.xml | 76 +++++++++++++++++ .../src/main/java/com/rnacos/demo/App.java | 16 ++++ .../foo/service/impl/DemoServiceImpl.java | 26 ++++++ .../src/main/resources/application.yml | 12 +++ sdk-examples/java/spring-cloud-v3/pom.xml | 66 +++++++++++++++ 42 files changed, 1070 insertions(+) create mode 100644 sdk-examples/java/spring-cloud-v2/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v2/README.md create mode 100644 sdk-examples/java/spring-cloud-v2/demo-api/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v2/demo-api/pom.xml create mode 100644 sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/App.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-api/src/main/resources/application.yml create mode 100644 sdk-examples/java/spring-cloud-v2/demo-common/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v2/demo-common/pom.xml create mode 100644 sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/Result.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/package-info.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-service/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v2/demo-service/pom.xml create mode 100644 sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/App.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java create mode 100644 sdk-examples/java/spring-cloud-v2/demo-service/src/main/resources/application.yml create mode 100644 sdk-examples/java/spring-cloud-v2/pom.xml create mode 100644 sdk-examples/java/spring-cloud-v3/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v3/README.md create mode 100644 sdk-examples/java/spring-cloud-v3/demo-api/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v3/demo-api/pom.xml create mode 100644 sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/App.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-api/src/main/resources/application.yml create mode 100644 sdk-examples/java/spring-cloud-v3/demo-common/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v3/demo-common/pom.xml create mode 100644 sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/Result.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/package-info.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-service/.gitignore create mode 100644 sdk-examples/java/spring-cloud-v3/demo-service/pom.xml create mode 100644 sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/App.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java create mode 100644 sdk-examples/java/spring-cloud-v3/demo-service/src/main/resources/application.yml create mode 100644 sdk-examples/java/spring-cloud-v3/pom.xml diff --git a/sdk-examples/java/spring-cloud-v2/.gitignore b/sdk-examples/java/spring-cloud-v2/.gitignore new file mode 100644 index 00000000..3b8d969a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/.gitignore @@ -0,0 +1,3 @@ +tmp/ +.vscode/ + diff --git a/sdk-examples/java/spring-cloud-v2/README.md b/sdk-examples/java/spring-cloud-v2/README.md new file mode 100644 index 00000000..c23e9e00 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/README.md @@ -0,0 +1,24 @@ + +# r-nacos spring-cloud-v2 说明 + +本样例基于spring-boot:2.7.18和spring-cloud:2021.0.9,支持jdk1.8版本。 + + + +## 使用方式 + +1. 启动r-nacos +2. 切换到spring-cloud-v2样例目录 +3. 本地打包 `mvn package` (如果有问题可以用 `mvn install` ) +4. 运行service: `java -jar demo-service/target/demo-service-1.0-SNAPSHOT.jar` +5. 运行api: `java -jar demo-api/target/demo-api-1.0-SNAPSHOT.jar` +6. 访问api: `curl "http://127.0.0.1:20895/hi?name=r-nacos"` + +```sh +curl "http://127.0.0.1:20895/hi?name=r-nacos" + +[springcloud-demo-service]: Hello, r-nacos +``` + + + diff --git a/sdk-examples/java/spring-cloud-v2/demo-api/.gitignore b/sdk-examples/java/spring-cloud-v2/demo-api/.gitignore new file mode 100644 index 00000000..dc0d833a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-api/.gitignore @@ -0,0 +1,2 @@ +target/ + diff --git a/sdk-examples/java/spring-cloud-v2/demo-api/pom.xml b/sdk-examples/java/spring-cloud-v2/demo-api/pom.xml new file mode 100644 index 00000000..6f74c9b9 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-api/pom.xml @@ -0,0 +1,83 @@ + + 4.0.0 + + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + ../pom.xml + + + demo-api + demo-api + jar + + + UTF-8 + + + + + com.rnacos.demo + demo-common + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + diff --git a/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/App.java b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/App.java new file mode 100644 index 00000000..59bdd708 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/App.java @@ -0,0 +1,16 @@ +package com.rnacos.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; + +/** + * + */ +@SpringBootApplication +@EnableFeignClients // 启用 OpenFeign +public class App { + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java new file mode 100644 index 00000000..790e9625 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java @@ -0,0 +1,17 @@ +package com.rnacos.demo.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.rnacos.demo.Result; +import com.rnacos.demo.foo.SayHelloRequest; +import com.rnacos.demo.foo.SayHelloResponse; + +@FeignClient("springcloud-demo-service") +public interface DemoServiceClient { + + @RequestMapping(value = "/foo/sayHello", method = RequestMethod.POST) + Result sayHello(@RequestBody SayHelloRequest request); +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java new file mode 100644 index 00000000..9161cab1 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java @@ -0,0 +1,41 @@ +package com.rnacos.demo.foo.api; + +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Value; + +import com.rnacos.demo.Result; +import com.rnacos.demo.client.DemoServiceClient; +import com.rnacos.demo.foo.SayHelloRequest; +import com.rnacos.demo.foo.SayHelloResponse; + +import javax.annotation.Resource; + +@Component +@RestController +public class FooController { + @Value("${spring.application.name}") + private String serviceName; + + @Resource + private DemoServiceClient demoServiceClient; + + @GetMapping("/hi") + public String hello(@RequestParam("name") String name) { + if (name == null) { + name = "default"; + } + SayHelloRequest request = new SayHelloRequest(); + request.setName(name); + request.setFromAppName(serviceName); + Result sayHelloResult = demoServiceClient.sayHello(request); + if (!sayHelloResult.isSuccess()) { + return String.format("[ERROR]: %s", sayHelloResult.getMsg()); + } + SayHelloResponse sayHelloResponse = sayHelloResult.getData(); + return String.format("[%s]: %s", sayHelloResponse.getResponseFromAppName(), + sayHelloResponse.getResponseValue()); + } +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-api/src/main/resources/application.yml b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/resources/application.yml new file mode 100644 index 00000000..4d966cdf --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-api/src/main/resources/application.yml @@ -0,0 +1,12 @@ +server: + port: 20895 +spring: + application: + name: springcloud-demo-api + cloud: + nacos: + discovery: + username: nacos # nacos 登录用户名 + password: nacos # 密码 + server-addr: 127.0.0.1:8848 # nacos 服务端地址 + diff --git a/sdk-examples/java/spring-cloud-v2/demo-common/.gitignore b/sdk-examples/java/spring-cloud-v2/demo-common/.gitignore new file mode 100644 index 00000000..dc0d833a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-common/.gitignore @@ -0,0 +1,2 @@ +target/ + diff --git a/sdk-examples/java/spring-cloud-v2/demo-common/pom.xml b/sdk-examples/java/spring-cloud-v2/demo-common/pom.xml new file mode 100644 index 00000000..b86cd42d --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-common/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + ../pom.xml + + + demo-common + demo-common + jar + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + + + diff --git a/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/Result.java b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/Result.java new file mode 100644 index 00000000..3f26e50a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/Result.java @@ -0,0 +1,54 @@ +package com.rnacos.demo; + +import java.io.Serializable; + +public class Result implements Serializable { + private boolean success; + private T data; + private String msg; + + public Result() { + + } + + public Result(T data) { + this.success = true; + this.data = data; + } + + public static Result of(T data) { + return new Result<>(data); + } + + public static Result error(String msg) { + Result result = new Result<>(); + result.success = false; + result.msg = msg; + return result; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java new file mode 100644 index 00000000..aaac22c4 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java @@ -0,0 +1,5 @@ +package com.rnacos.demo.foo; + +public interface DemoService { + String sayHello(String name); +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java new file mode 100644 index 00000000..7a033330 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java @@ -0,0 +1,24 @@ +package com.rnacos.demo.foo; + +import java.io.Serializable; + +public class SayHelloRequest implements Serializable { + private String fromAppName; + private String name; + + public String getFromAppName() { + return fromAppName; + } + + public void setFromAppName(String fromAppName) { + this.fromAppName = fromAppName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java new file mode 100644 index 00000000..b5098627 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java @@ -0,0 +1,25 @@ +package com.rnacos.demo.foo; + +import java.io.Serializable; + +public class SayHelloResponse implements Serializable { + private String responseValue; + private String responseFromAppName; + + public String getResponseValue() { + return responseValue; + } + + public void setResponseValue(String responseValue) { + this.responseValue = responseValue; + } + + public String getResponseFromAppName() { + return responseFromAppName; + } + + public void setResponseFromAppName(String responseFromAppName) { + this.responseFromAppName = responseFromAppName; + } + +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/package-info.java b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/package-info.java new file mode 100644 index 00000000..567545c6 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-common/src/main/java/com/rnacos/demo/package-info.java @@ -0,0 +1 @@ +package com.rnacos.demo; diff --git a/sdk-examples/java/spring-cloud-v2/demo-service/.gitignore b/sdk-examples/java/spring-cloud-v2/demo-service/.gitignore new file mode 100644 index 00000000..dc0d833a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-service/.gitignore @@ -0,0 +1,2 @@ +target/ + diff --git a/sdk-examples/java/spring-cloud-v2/demo-service/pom.xml b/sdk-examples/java/spring-cloud-v2/demo-service/pom.xml new file mode 100644 index 00000000..6bbf6f4b --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-service/pom.xml @@ -0,0 +1,75 @@ + + 4.0.0 + + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + ../pom.xml + + + demo-service + demo-service + jar + + + UTF-8 + + + + + com.rnacos.demo + demo-common + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + diff --git a/sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/App.java b/sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/App.java new file mode 100644 index 00000000..48ca3746 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/App.java @@ -0,0 +1,16 @@ +package com.rnacos.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * + */ +@SpringBootApplication +@EnableDiscoveryClient +public class App { + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java b/sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java new file mode 100644 index 00000000..04c7dd0e --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java @@ -0,0 +1,26 @@ +package com.rnacos.demo.foo.service.impl; + +//import com.rnacos.demo.foo.DemoService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.rnacos.demo.Result; +import com.rnacos.demo.foo.SayHelloRequest; +import com.rnacos.demo.foo.SayHelloResponse; + +@RestController +public class DemoServiceImpl { + @Value("${spring.application.name}") + private String serviceName; + + @RequestMapping(value = "/foo/sayHello", method = RequestMethod.POST) + public Result sayHello(@RequestBody SayHelloRequest request) { + SayHelloResponse response = new SayHelloResponse(); + response.setResponseFromAppName(serviceName); + response.setResponseValue(String.format("Hello, %s", request.getName())); + return Result.of(response); + } +} diff --git a/sdk-examples/java/spring-cloud-v2/demo-service/src/main/resources/application.yml b/sdk-examples/java/spring-cloud-v2/demo-service/src/main/resources/application.yml new file mode 100644 index 00000000..087f8532 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/demo-service/src/main/resources/application.yml @@ -0,0 +1,12 @@ +server: + port: 20894 +spring: + application: + name: springcloud-demo-service + cloud: + nacos: + discovery: + username: nacos # nacos 登录用户名 + password: nacos # 密码 + server-addr: 127.0.0.1:8848 # nacos 服务端地址 + diff --git a/sdk-examples/java/spring-cloud-v2/pom.xml b/sdk-examples/java/spring-cloud-v2/pom.xml new file mode 100644 index 00000000..74e3a707 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v2/pom.xml @@ -0,0 +1,62 @@ + + 4.0.0 + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + pom + + springcloud-demo-parent + http://maven.apache.org + + + 1.8 + 1.8 + UTF-8 + + 2.7.18 + 2021.0.9 + 2021.1 + + + + demo-common + demo-service + demo-api + + + + + + + org.springframework.boot + spring-boot-dependencies + ${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 + + + com.rnacos.demo + demo-common + 1.0-SNAPSHOT + + + + + + diff --git a/sdk-examples/java/spring-cloud-v3/.gitignore b/sdk-examples/java/spring-cloud-v3/.gitignore new file mode 100644 index 00000000..3b8d969a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/.gitignore @@ -0,0 +1,3 @@ +tmp/ +.vscode/ + diff --git a/sdk-examples/java/spring-cloud-v3/README.md b/sdk-examples/java/spring-cloud-v3/README.md new file mode 100644 index 00000000..b86bc968 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/README.md @@ -0,0 +1,24 @@ + +# r-nacos spring-cloud-v3 说明 + +本样例基于spring-boot:3.2.8和spring-cloud:2023.0.3,支持jdk17版本。 + + + +## 使用方式 + +1. 启动r-nacos +2. 切换到spring-cloud-v3样例目录 +3. 本地打包 `mvn package` (如果有问题可以用 `mvn install` ) +4. 运行service: `java -jar demo-service/target/demo-service-1.0-SNAPSHOT.jar` +5. 运行api: `java -jar demo-api/target/demo-api-1.0-SNAPSHOT.jar` +6. 访问api: `curl "http://127.0.0.1:20885/hi?name=r-nacos"` + +```sh +curl "http://127.0.0.1:20885/hi?name=r-nacos" + +[springcloud-demo-service]: Hello, r-nacos +``` + + + diff --git a/sdk-examples/java/spring-cloud-v3/demo-api/.gitignore b/sdk-examples/java/spring-cloud-v3/demo-api/.gitignore new file mode 100644 index 00000000..dc0d833a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-api/.gitignore @@ -0,0 +1,2 @@ +target/ + diff --git a/sdk-examples/java/spring-cloud-v3/demo-api/pom.xml b/sdk-examples/java/spring-cloud-v3/demo-api/pom.xml new file mode 100644 index 00000000..87500a88 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-api/pom.xml @@ -0,0 +1,84 @@ + + 4.0.0 + + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + ../pom.xml + + + demo-api + demo-api + jar + + + UTF-8 + + + + + com.rnacos.demo + demo-common + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + javax.annotation + javax.annotation-api + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + \ No newline at end of file diff --git a/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/App.java b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/App.java new file mode 100644 index 00000000..59bdd708 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/App.java @@ -0,0 +1,16 @@ +package com.rnacos.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; + +/** + * + */ +@SpringBootApplication +@EnableFeignClients // 启用 OpenFeign +public class App { + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java new file mode 100644 index 00000000..790e9625 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/client/DemoServiceClient.java @@ -0,0 +1,17 @@ +package com.rnacos.demo.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.rnacos.demo.Result; +import com.rnacos.demo.foo.SayHelloRequest; +import com.rnacos.demo.foo.SayHelloResponse; + +@FeignClient("springcloud-demo-service") +public interface DemoServiceClient { + + @RequestMapping(value = "/foo/sayHello", method = RequestMethod.POST) + Result sayHello(@RequestBody SayHelloRequest request); +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java new file mode 100644 index 00000000..9161cab1 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/java/com/rnacos/demo/foo/api/FooController.java @@ -0,0 +1,41 @@ +package com.rnacos.demo.foo.api; + +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Value; + +import com.rnacos.demo.Result; +import com.rnacos.demo.client.DemoServiceClient; +import com.rnacos.demo.foo.SayHelloRequest; +import com.rnacos.demo.foo.SayHelloResponse; + +import javax.annotation.Resource; + +@Component +@RestController +public class FooController { + @Value("${spring.application.name}") + private String serviceName; + + @Resource + private DemoServiceClient demoServiceClient; + + @GetMapping("/hi") + public String hello(@RequestParam("name") String name) { + if (name == null) { + name = "default"; + } + SayHelloRequest request = new SayHelloRequest(); + request.setName(name); + request.setFromAppName(serviceName); + Result sayHelloResult = demoServiceClient.sayHello(request); + if (!sayHelloResult.isSuccess()) { + return String.format("[ERROR]: %s", sayHelloResult.getMsg()); + } + SayHelloResponse sayHelloResponse = sayHelloResult.getData(); + return String.format("[%s]: %s", sayHelloResponse.getResponseFromAppName(), + sayHelloResponse.getResponseValue()); + } +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-api/src/main/resources/application.yml b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/resources/application.yml new file mode 100644 index 00000000..430b949c --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-api/src/main/resources/application.yml @@ -0,0 +1,12 @@ +server: + port: 20885 +spring: + application: + name: springcloud-demo-api + cloud: + nacos: + discovery: + username: nacos # nacos 登录用户名 + password: nacos # 密码 + server-addr: 127.0.0.1:8848 # nacos 服务端地址 + diff --git a/sdk-examples/java/spring-cloud-v3/demo-common/.gitignore b/sdk-examples/java/spring-cloud-v3/demo-common/.gitignore new file mode 100644 index 00000000..dc0d833a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-common/.gitignore @@ -0,0 +1,2 @@ +target/ + diff --git a/sdk-examples/java/spring-cloud-v3/demo-common/pom.xml b/sdk-examples/java/spring-cloud-v3/demo-common/pom.xml new file mode 100644 index 00000000..b86cd42d --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-common/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + ../pom.xml + + + demo-common + demo-common + jar + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + + + diff --git a/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/Result.java b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/Result.java new file mode 100644 index 00000000..3f26e50a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/Result.java @@ -0,0 +1,54 @@ +package com.rnacos.demo; + +import java.io.Serializable; + +public class Result implements Serializable { + private boolean success; + private T data; + private String msg; + + public Result() { + + } + + public Result(T data) { + this.success = true; + this.data = data; + } + + public static Result of(T data) { + return new Result<>(data); + } + + public static Result error(String msg) { + Result result = new Result<>(); + result.success = false; + result.msg = msg; + return result; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java new file mode 100644 index 00000000..aaac22c4 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/DemoService.java @@ -0,0 +1,5 @@ +package com.rnacos.demo.foo; + +public interface DemoService { + String sayHello(String name); +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java new file mode 100644 index 00000000..7a033330 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloRequest.java @@ -0,0 +1,24 @@ +package com.rnacos.demo.foo; + +import java.io.Serializable; + +public class SayHelloRequest implements Serializable { + private String fromAppName; + private String name; + + public String getFromAppName() { + return fromAppName; + } + + public void setFromAppName(String fromAppName) { + this.fromAppName = fromAppName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java new file mode 100644 index 00000000..b5098627 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/foo/SayHelloResponse.java @@ -0,0 +1,25 @@ +package com.rnacos.demo.foo; + +import java.io.Serializable; + +public class SayHelloResponse implements Serializable { + private String responseValue; + private String responseFromAppName; + + public String getResponseValue() { + return responseValue; + } + + public void setResponseValue(String responseValue) { + this.responseValue = responseValue; + } + + public String getResponseFromAppName() { + return responseFromAppName; + } + + public void setResponseFromAppName(String responseFromAppName) { + this.responseFromAppName = responseFromAppName; + } + +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/package-info.java b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/package-info.java new file mode 100644 index 00000000..567545c6 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-common/src/main/java/com/rnacos/demo/package-info.java @@ -0,0 +1 @@ +package com.rnacos.demo; diff --git a/sdk-examples/java/spring-cloud-v3/demo-service/.gitignore b/sdk-examples/java/spring-cloud-v3/demo-service/.gitignore new file mode 100644 index 00000000..dc0d833a --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-service/.gitignore @@ -0,0 +1,2 @@ +target/ + diff --git a/sdk-examples/java/spring-cloud-v3/demo-service/pom.xml b/sdk-examples/java/spring-cloud-v3/demo-service/pom.xml new file mode 100644 index 00000000..4812e4a6 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-service/pom.xml @@ -0,0 +1,76 @@ + + 4.0.0 + + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + ../pom.xml + + + demo-service + demo-service + jar + + + UTF-8 + + + + + com.rnacos.demo + demo-common + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + javax.annotation + javax.annotation-api + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + \ No newline at end of file diff --git a/sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/App.java b/sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/App.java new file mode 100644 index 00000000..48ca3746 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/App.java @@ -0,0 +1,16 @@ +package com.rnacos.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * + */ +@SpringBootApplication +@EnableDiscoveryClient +public class App { + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java b/sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java new file mode 100644 index 00000000..04c7dd0e --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-service/src/main/java/com/rnacos/demo/foo/service/impl/DemoServiceImpl.java @@ -0,0 +1,26 @@ +package com.rnacos.demo.foo.service.impl; + +//import com.rnacos.demo.foo.DemoService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.rnacos.demo.Result; +import com.rnacos.demo.foo.SayHelloRequest; +import com.rnacos.demo.foo.SayHelloResponse; + +@RestController +public class DemoServiceImpl { + @Value("${spring.application.name}") + private String serviceName; + + @RequestMapping(value = "/foo/sayHello", method = RequestMethod.POST) + public Result sayHello(@RequestBody SayHelloRequest request) { + SayHelloResponse response = new SayHelloResponse(); + response.setResponseFromAppName(serviceName); + response.setResponseValue(String.format("Hello, %s", request.getName())); + return Result.of(response); + } +} diff --git a/sdk-examples/java/spring-cloud-v3/demo-service/src/main/resources/application.yml b/sdk-examples/java/spring-cloud-v3/demo-service/src/main/resources/application.yml new file mode 100644 index 00000000..6a828495 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/demo-service/src/main/resources/application.yml @@ -0,0 +1,12 @@ +server: + port: 20884 +spring: + application: + name: springcloud-demo-service + cloud: + nacos: + discovery: + username: nacos # nacos 登录用户名 + password: nacos # 密码 + server-addr: 127.0.0.1:8848 # nacos 服务端地址 + diff --git a/sdk-examples/java/spring-cloud-v3/pom.xml b/sdk-examples/java/spring-cloud-v3/pom.xml new file mode 100644 index 00000000..54b5c530 --- /dev/null +++ b/sdk-examples/java/spring-cloud-v3/pom.xml @@ -0,0 +1,66 @@ + + 4.0.0 + + com.rnacos.demo + springcloud-demo-parent + 1.0-SNAPSHOT + pom + + springcloud-demo-parent + http://maven.apache.org + + + 17 + 17 + UTF-8 + + 3.2.8 + 2023.0.3 + 2023.0.1.2 + + + + demo-common + demo-service + demo-api + + + + + + + org.springframework.boot + spring-boot-dependencies + ${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 + + + com.rnacos.demo + demo-common + 1.0-SNAPSHOT + + + javax.annotation + javax.annotation-api + 1.3.2 + + + + + + \ No newline at end of file