From 497e6a024f7c1c2dc83d38c4e3df5cc7ed8bdda4 Mon Sep 17 00:00:00 2001 From: fxb Date: Sun, 25 Nov 2018 12:41:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Espringcloud=20config,eureka?= =?UTF-8?q?=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- springcloud/第一篇所用代码/confsvr/pom.xml | 65 +++++++++++++++++ .../main/java/com/fxb/demo/ConfsvrApplication.java | 14 ++++ .../confsvr/src/main/resources/application.yml | 25 +++++++ .../java/com/fxb/demo/ConfsvrApplicationTests.java | 16 +++++ .../第一篇所用代码/licensingservice/pom.xml | 65 +++++++++++++++++ .../LicensingserviceApplication.java | 12 ++++ .../src/main/resources/application.yml | 2 + .../src/main/resources/bootstrap.yml | 13 ++++ .../LicensingserviceApplicationTests.java | 16 +++++ springcloud/第二篇代码/confsvr/pom.xml | 65 +++++++++++++++++ .../main/java/com/fxb/demo/ConfsvrApplication.java | 16 +++++ .../confsvr/src/main/resources/application.yml | 29 ++++++++ .../java/com/fxb/demo/ConfsvrApplicationTests.java | 16 +++++ springcloud/第二篇代码/eurekasvr/pom.xml | 72 +++++++++++++++++++ .../com/fxb/eurekasvr/EurekasvrApplication.java | 14 ++++ .../eurekasvr/src/main/resources/application.yml | 12 ++++ .../fxb/eurekasvr/EurekasvrApplicationTests.java | 16 +++++ .../第二篇代码/licensingservice/pom.xml | 69 ++++++++++++++++++ .../com/fxb/licensingservice/Entity/Licensing.java | 31 ++++++++ .../fxb/licensingservice/Entity/Organization.java | 40 +++++++++++ .../LicensingserviceApplication.java | 28 ++++++++ .../client/OrganizationFeignClient.java | 27 +++++++ .../controller/LicensingController.java | 56 +++++++++++++++ .../service/OrganizationByRibbonService.java | 32 +++++++++ .../service/OrganizationService.java | 50 +++++++++++++ .../src/main/resources/application.yml | 0 .../src/main/resources/bootstrap.yml | 19 +++++ .../LicensingserviceApplicationTests.java | 16 +++++ .../第二篇代码/organizationservice/pom.xml | 65 +++++++++++++++++ .../OrganizationserviceApplication.java | 14 ++++ .../controller/OrganizationController.java | 27 +++++++ .../src/main/resources/application.properties | 0 .../src/main/resources/bootstrap.yml | 18 +++++ .../OrganizationserviceApplicationTests.java | 16 +++++ 34 files changed, 976 insertions(+) create mode 100644 springcloud/第一篇所用代码/confsvr/pom.xml create mode 100644 springcloud/第一篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java create mode 100644 springcloud/第一篇所用代码/confsvr/src/main/resources/application.yml create mode 100644 springcloud/第一篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java create mode 100644 springcloud/第一篇所用代码/licensingservice/pom.xml create mode 100644 springcloud/第一篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java create mode 100644 springcloud/第一篇所用代码/licensingservice/src/main/resources/application.yml create mode 100644 springcloud/第一篇所用代码/licensingservice/src/main/resources/bootstrap.yml create mode 100644 springcloud/第一篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java create mode 100644 springcloud/第二篇代码/confsvr/pom.xml create mode 100644 springcloud/第二篇代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java create mode 100644 springcloud/第二篇代码/confsvr/src/main/resources/application.yml create mode 100644 springcloud/第二篇代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java create mode 100644 springcloud/第二篇代码/eurekasvr/pom.xml create mode 100644 springcloud/第二篇代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java create mode 100644 springcloud/第二篇代码/eurekasvr/src/main/resources/application.yml create mode 100644 springcloud/第二篇代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java create mode 100644 springcloud/第二篇代码/licensingservice/pom.xml create mode 100644 springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java create mode 100644 springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java create mode 100644 springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java create mode 100644 springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java create mode 100644 springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java create mode 100644 springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java create mode 100644 springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java create mode 100644 springcloud/第二篇代码/licensingservice/src/main/resources/application.yml create mode 100644 springcloud/第二篇代码/licensingservice/src/main/resources/bootstrap.yml create mode 100644 springcloud/第二篇代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java create mode 100644 springcloud/第二篇代码/organizationservice/pom.xml create mode 100644 springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java create mode 100644 springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java create mode 100644 springcloud/第二篇代码/organizationservice/src/main/resources/application.properties create mode 100644 springcloud/第二篇代码/organizationservice/src/main/resources/bootstrap.yml create mode 100644 springcloud/第二篇代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java diff --git a/springcloud/第一篇所用代码/confsvr/pom.xml b/springcloud/第一篇所用代码/confsvr/pom.xml new file mode 100644 index 0000000..de9e7df --- /dev/null +++ b/springcloud/第一篇所用代码/confsvr/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.fxb + demo + 0.0.1-SNAPSHOT + jar + + confsvr + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.4.4.RELEASE + + + + + org.springframework.cloud + spring-cloud-dependencies + Camden.SR5 + pom + import + + + + + + UTF-8 + UTF-8 + 1.8 + Camden.SR5 + + + + + org.springframework.cloud + spring-cloud-config-server + + + org.springframework.cloud + spring-cloud-starter-config + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/springcloud/第一篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java b/springcloud/第一篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java new file mode 100644 index 0000000..b0f9afd --- /dev/null +++ b/springcloud/第一篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java @@ -0,0 +1,14 @@ +package com.fxb.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.config.server.EnableConfigServer; + +@SpringBootApplication +@EnableConfigServer +public class ConfsvrApplication { + + public static void main(String[] args) { + SpringApplication.run(ConfsvrApplication.class, args); + } +} diff --git a/springcloud/第一篇所用代码/confsvr/src/main/resources/application.yml b/springcloud/第一篇所用代码/confsvr/src/main/resources/application.yml new file mode 100644 index 0000000..4acc350 --- /dev/null +++ b/springcloud/第一篇所用代码/confsvr/src/main/resources/application.yml @@ -0,0 +1,25 @@ +server: + port: 8888 + +spring: + profiles: + # 使用文件系统来存储配置信息,需要设置为native,git设置为git + active: git + application: + name: test + cloud: + config: + server: + native: + # 使用文件来存放配置文件,为每个应用程序提供用逗号分隔的文件夹列表 + searchLocations: file:///D:/configFolder/licensingservice + git: + uri: https://github.com/FleyX/demo-project + # 查找配置文件路径(,分隔) + search-paths: springcloud/config/licensingservice + #如果为公开仓库,用户名密码可不填写 + username: + password: + #配置git仓库的分支 + label: master + diff --git a/springcloud/第一篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java b/springcloud/第一篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java new file mode 100644 index 0000000..3096743 --- /dev/null +++ b/springcloud/第一篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java @@ -0,0 +1,16 @@ +package com.fxb.demo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ConfsvrApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/springcloud/第一篇所用代码/licensingservice/pom.xml b/springcloud/第一篇所用代码/licensingservice/pom.xml new file mode 100644 index 0000000..ae1f889 --- /dev/null +++ b/springcloud/第一篇所用代码/licensingservice/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.fxb + licensingservice + 0.0.1-SNAPSHOT + jar + + licensingservice + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.4.4.RELEASE + + + + + org.springframework.cloud + spring-cloud-dependencies + Camden.SR5 + pom + import + + + + + + UTF-8 + UTF-8 + 1.8 + Camden.SR5 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-config-client + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/springcloud/第一篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java b/springcloud/第一篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java new file mode 100644 index 0000000..aec64ea --- /dev/null +++ b/springcloud/第一篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java @@ -0,0 +1,12 @@ +package com.fxb.licensingservice; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LicensingserviceApplication { + + public static void main(String[] args) { + SpringApplication.run(LicensingserviceApplication.class, args); + } +} diff --git a/springcloud/第一篇所用代码/licensingservice/src/main/resources/application.yml b/springcloud/第一篇所用代码/licensingservice/src/main/resources/application.yml new file mode 100644 index 0000000..6357631 --- /dev/null +++ b/springcloud/第一篇所用代码/licensingservice/src/main/resources/application.yml @@ -0,0 +1,2 @@ +server: + port: 10099 \ No newline at end of file diff --git a/springcloud/第一篇所用代码/licensingservice/src/main/resources/bootstrap.yml b/springcloud/第一篇所用代码/licensingservice/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..57cbbcb --- /dev/null +++ b/springcloud/第一篇所用代码/licensingservice/src/main/resources/bootstrap.yml @@ -0,0 +1,13 @@ +spring: + application: + #指定名称,以便spring cloud config客户端知道查找哪个配置 + name: licensingservice + profiles: + #指定环境 + active: dev + cloud: + config: + enabled: true + #指定config server地址 + uri: http://localhost:8888 + diff --git a/springcloud/第一篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java b/springcloud/第一篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java new file mode 100644 index 0000000..d29b4bf --- /dev/null +++ b/springcloud/第一篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java @@ -0,0 +1,16 @@ +package com.fxb.licensingservice; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class LicensingserviceApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/springcloud/第二篇代码/confsvr/pom.xml b/springcloud/第二篇代码/confsvr/pom.xml new file mode 100644 index 0000000..5c8cec2 --- /dev/null +++ b/springcloud/第二篇代码/confsvr/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.fxb + demo + 0.0.1-SNAPSHOT + jar + + confsvr + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.4.4.RELEASE + + + + + org.springframework.cloud + spring-cloud-dependencies + Camden.SR5 + pom + import + + + + + + UTF-8 + UTF-8 + 1.8 + Camden.SR5 + + + + + org.springframework.cloud + spring-cloud-config-server + + + org.springframework.cloud + spring-cloud-starter-eureka + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/springcloud/第二篇代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java b/springcloud/第二篇代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java new file mode 100644 index 0000000..3c94900 --- /dev/null +++ b/springcloud/第二篇代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java @@ -0,0 +1,16 @@ +package com.fxb.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.config.server.EnableConfigServer; + +@SpringBootApplication +@EnableConfigServer +@EnableDiscoveryClient +public class ConfsvrApplication { + + public static void main(String[] args) { + SpringApplication.run(ConfsvrApplication.class, args); + } +} diff --git a/springcloud/第二篇代码/confsvr/src/main/resources/application.yml b/springcloud/第二篇代码/confsvr/src/main/resources/application.yml new file mode 100644 index 0000000..131a36e --- /dev/null +++ b/springcloud/第二篇代码/confsvr/src/main/resources/application.yml @@ -0,0 +1,29 @@ +server: + port: 8888 + +eureka: + instance: + #注册服务的IP,而不是服务器名 + prefer-ip-address: true + client: + #向eureka注册服务 + register-with-eureka: true + #拉取注册表的本地副本 + fetch-registry: true + service-url: + #Eureka服务的位置(如果有多个注册中心,使用,分隔) + defaultZone: http://localhost:8761/eureka/ + +spring: + profiles: + # 使用文件系统来存储配置信息,需要设置为native + active: native + application: + name: confsvr + cloud: + config: + server: + native: + # 使用文件来存放配置文件,为每个应用程序提供用逗号分隔的文件夹列表 + searchLocations: file:///D:/configFolder/licensingservice,file:///D:/configFolder/organizationservice + diff --git a/springcloud/第二篇代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java b/springcloud/第二篇代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java new file mode 100644 index 0000000..3096743 --- /dev/null +++ b/springcloud/第二篇代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java @@ -0,0 +1,16 @@ +package com.fxb.demo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ConfsvrApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/springcloud/第二篇代码/eurekasvr/pom.xml b/springcloud/第二篇代码/eurekasvr/pom.xml new file mode 100644 index 0000000..5337b2a --- /dev/null +++ b/springcloud/第二篇代码/eurekasvr/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + com.fxb + eurekasvr + 0.0.1-SNAPSHOT + jar + + eurekasvr + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.4.4.RELEASE + + + + + org.springframework.cloud + spring-cloud-dependencies + Camden.SR5 + pom + import + + + + + + UTF-8 + UTF-8 + 1.8 + Camden.SR5 + + + + + org.springframework.cloud + spring-cloud-starter-eureka-server + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + diff --git a/springcloud/第二篇代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java b/springcloud/第二篇代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java new file mode 100644 index 0000000..0ee3302 --- /dev/null +++ b/springcloud/第二篇代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java @@ -0,0 +1,14 @@ +package com.fxb.eurekasvr; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; + +@SpringBootApplication +@EnableEurekaServer +public class EurekasvrApplication { + + public static void main(String[] args) { + SpringApplication.run(EurekasvrApplication.class, args); + } +} diff --git a/springcloud/第二篇代码/eurekasvr/src/main/resources/application.yml b/springcloud/第二篇代码/eurekasvr/src/main/resources/application.yml new file mode 100644 index 0000000..b2db060 --- /dev/null +++ b/springcloud/第二篇代码/eurekasvr/src/main/resources/application.yml @@ -0,0 +1,12 @@ +server: + port: 8761 + +eureka: + client: + #不注册自己 + register-with-eureka: false + #不在本地缓存注册表信息 + fetch-registry: false + server: + #接受请求前的等待实际,开发模式下不要开启 + #wait-time-in-ms-when-sync-empty: 5 diff --git a/springcloud/第二篇代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java b/springcloud/第二篇代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java new file mode 100644 index 0000000..3d21ad6 --- /dev/null +++ b/springcloud/第二篇代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java @@ -0,0 +1,16 @@ +package com.fxb.eurekasvr; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class EurekasvrApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/springcloud/第二篇代码/licensingservice/pom.xml b/springcloud/第二篇代码/licensingservice/pom.xml new file mode 100644 index 0000000..d261802 --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + + com.fxb + licensingservice + 0.0.1-SNAPSHOT + jar + + licensingservice + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.4.4.RELEASE + + + + + org.springframework.cloud + spring-cloud-dependencies + Camden.SR5 + pom + import + + + + + + UTF-8 + UTF-8 + 1.8 + Camden.SR5 + + + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.cloud + spring-cloud-config-client + + + org.springframework.cloud + spring-cloud-starter-feign + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java new file mode 100644 index 0000000..c31bc03 --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java @@ -0,0 +1,31 @@ +package com.fxb.licensingservice.Entity; + +import java.io.Serializable; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/22 19:52 + */ +public class Licensing implements Serializable { + private Organization organization; + private boolean isValid; + + public Organization getOrganization() { + return organization; + } + + public void setOrganization(Organization organization) { + this.organization = organization; + } + + public boolean isValid() { + return isValid; + } + + public void setValid(boolean valid) { + isValid = valid; + } +} diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java new file mode 100644 index 0000000..a2f4097 --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java @@ -0,0 +1,40 @@ +package com.fxb.licensingservice.Entity; + +import java.io.Serializable; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/22 19:30 + */ +public class Organization implements Serializable { + + private String id; + private String name; + + public Organization() { + } + + public Organization(String id, String name) { + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java new file mode 100644 index 0000000..5dde21f --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java @@ -0,0 +1,28 @@ +package com.fxb.licensingservice; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.cloud.netflix.feign.EnableFeignClients; +import org.springframework.context.annotation.Bean; +import org.springframework.web.client.RestTemplate; + +@SpringBootApplication +@EnableDiscoveryClient //使用不带Ribbon功能的Spring RestTemplate,其他情况下可删除 +@EnableFeignClients //使用Feign客户端进行服务调用,其他情况下可删除 +public class LicensingserviceApplication { + + /** + * 使用带有Ribbon 功能的Spring RestTemplate,其他情况可删除 + */ + @LoadBalanced + @Bean + public RestTemplate getRestTemplate(){ + return new RestTemplate(); + } + + public static void main(String[] args) { + SpringApplication.run(LicensingserviceApplication.class, args); + } +} diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java new file mode 100644 index 0000000..66b7ee1 --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java @@ -0,0 +1,27 @@ +package com.fxb.licensingservice.client; + +import com.fxb.licensingservice.Entity.Organization; +import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/23 17:24 + */ +@FeignClient("organizationservice")//使用FeignClient注解指定目标服务 +public interface OrganizationFeignClient { + + /** + * 获取组织信息 + * + * @param orgId 组织id + * @return Organization + */ + @RequestMapping(method = RequestMethod.GET, value = "/organization/{orgId}", consumes = "application/json") + Organization getOrganization(@PathVariable("orgId") String orgId); +} diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java new file mode 100644 index 0000000..6ffda79 --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java @@ -0,0 +1,56 @@ +package com.fxb.licensingservice.controller; + +import com.fxb.licensingservice.Entity.Licensing; +import com.fxb.licensingservice.client.OrganizationFeignClient; +import com.fxb.licensingservice.service.OrganizationByRibbonService; +import com.fxb.licensingservice.service.OrganizationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/22 19:51 + */ +@RestController +public class LicensingController { + + private OrganizationService organizationService; + private OrganizationByRibbonService ribbonService; + private OrganizationFeignClient organizationFeignClient; + + @Autowired + public LicensingController(OrganizationService organizationService, OrganizationByRibbonService ribbonService, OrganizationFeignClient feignClient) { + this.organizationService = organizationService; + this.ribbonService = ribbonService; + this.organizationFeignClient = feignClient; + } + + @GetMapping("/licensing/{orgId}") + public Licensing getLicensing(@PathVariable("orgId") String orgId) { + Licensing licensing = new Licensing(); + licensing.setValid(false); + licensing.setOrganization(organizationService.getOrganization(orgId)); + return licensing; + } + + @GetMapping("/licensingByRibbon/{orgId}") + public Licensing getLicensingByRibbon(@PathVariable("orgId") String orgId) { + Licensing licensing = new Licensing(); + licensing.setValid(false); + licensing.setOrganization(ribbonService.getOrganizationWithRibbon(orgId)); + return licensing; + } + + @GetMapping("/licensingByFeign/{orgId}") + public Licensing getLicensingByFeign(@PathVariable("orgId") String orgId) { + Licensing licensing = new Licensing(); + licensing.setValid(false); + licensing.setOrganization(organizationFeignClient.getOrganization(orgId)); + return licensing; + } +} diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java new file mode 100644 index 0000000..8aae193 --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java @@ -0,0 +1,32 @@ +package com.fxb.licensingservice.service; + +import com.fxb.licensingservice.Entity.Organization; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/23 15:36 + */ +@Component +public class OrganizationByRibbonService { + + private RestTemplate restTemplate; + + @Autowired + public OrganizationByRibbonService(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + public Organization getOrganizationWithRibbon(String id) { + ResponseEntity responseEntity = restTemplate.exchange("http://organizationservice/organization/{id}", + HttpMethod.GET, null, Organization.class, id); + return responseEntity.getBody(); + } +} diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java new file mode 100644 index 0000000..ac79ce4 --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java @@ -0,0 +1,50 @@ +package com.fxb.licensingservice.service; + +import com.fxb.licensingservice.Entity.Organization; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.List; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/22 19:29 + */ +@Service +public class OrganizationService { + + private static final String SERVICE_NAME = "organizationservice"; + private DiscoveryClient discoveryClient; + + @Autowired + public OrganizationService(DiscoveryClient discoveryClient) { + this.discoveryClient = discoveryClient; + } + + /** + * 使用Spring DiscoveryClient查询 + * + * @param id + * @return + */ + public Organization getOrganization(String id) { + RestTemplate restTemplate = new RestTemplate(); + List instances = discoveryClient.getInstances(SERVICE_NAME); + if (instances.size() == 0) { + throw new RuntimeException("无可用的服务"); + } + String serviceUri = String.format("%s/organization/%s", instances.get(0).getUri().toString(), id); + ResponseEntity responseEntity = restTemplate.exchange(serviceUri, HttpMethod.GET + , null, Organization.class, id); + return responseEntity.getBody(); + } + +} diff --git a/springcloud/第二篇代码/licensingservice/src/main/resources/application.yml b/springcloud/第二篇代码/licensingservice/src/main/resources/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/springcloud/第二篇代码/licensingservice/src/main/resources/bootstrap.yml b/springcloud/第二篇代码/licensingservice/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..d75fc7b --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/main/resources/bootstrap.yml @@ -0,0 +1,19 @@ +spring: + application: + #指定名称,以便spring cloud config客户端知道查找哪个配置 + name: licensingservice + profiles: + #指定环境 + active: dev + cloud: + config: + enabled: true +eureka: + instance: + prefer-ip-address: true + client: + register-with-eureka: true + fetch-registry: true + service-url: + defaultZone: http://localhost:8761/eureka/ + diff --git a/springcloud/第二篇代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java b/springcloud/第二篇代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java new file mode 100644 index 0000000..d29b4bf --- /dev/null +++ b/springcloud/第二篇代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java @@ -0,0 +1,16 @@ +package com.fxb.licensingservice; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class LicensingserviceApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/springcloud/第二篇代码/organizationservice/pom.xml b/springcloud/第二篇代码/organizationservice/pom.xml new file mode 100644 index 0000000..421deea --- /dev/null +++ b/springcloud/第二篇代码/organizationservice/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.fxb + organizationservice + 0.0.1-SNAPSHOT + jar + + organizationservice + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.4.4.RELEASE + + + + + org.springframework.cloud + spring-cloud-dependencies + Camden.SR5 + pom + import + + + + + + UTF-8 + UTF-8 + 1.8 + Camden.SR5 + + + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.cloud + spring-cloud-config-client + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java b/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java new file mode 100644 index 0000000..8da4995 --- /dev/null +++ b/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java @@ -0,0 +1,14 @@ +package com.fxb.organizationservice; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +@SpringBootApplication +@EnableDiscoveryClient +public class OrganizationserviceApplication { + + public static void main(String[] args) { + SpringApplication.run(OrganizationserviceApplication.class, args); + } +} diff --git a/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java b/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java new file mode 100644 index 0000000..6d37cf1 --- /dev/null +++ b/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java @@ -0,0 +1,27 @@ +package com.fxb.organizationservice.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/22 18:23 + */ +@RestController +public class OrganizationController { + + @GetMapping(value = "/organization/{orgId}") + public Object getOrganizationInfo(@PathVariable("orgId") String orgId) { + Map data = new HashMap<>(2); + data.put("id", orgId); + data.put("name", orgId + "公司"); + return data; + } +} diff --git a/springcloud/第二篇代码/organizationservice/src/main/resources/application.properties b/springcloud/第二篇代码/organizationservice/src/main/resources/application.properties new file mode 100644 index 0000000..e69de29 diff --git a/springcloud/第二篇代码/organizationservice/src/main/resources/bootstrap.yml b/springcloud/第二篇代码/organizationservice/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..f776ec4 --- /dev/null +++ b/springcloud/第二篇代码/organizationservice/src/main/resources/bootstrap.yml @@ -0,0 +1,18 @@ +spring: + application: + #指定名称,以便spring cloud config客户端知道查找哪个配置 + name: organizationservice + profiles: + #指定环境 + active: dev + cloud: + config: + enabled: true +eureka: + instance: + prefer-ip-address: true + client: + register-with-eureka: true + fetch-registry: true + service-url: + defaultZone: http://localhost:8761/eureka/ \ No newline at end of file diff --git a/springcloud/第二篇代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java b/springcloud/第二篇代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java new file mode 100644 index 0000000..8909128 --- /dev/null +++ b/springcloud/第二篇代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java @@ -0,0 +1,16 @@ +package com.fxb.organizationservice; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class OrganizationserviceApplicationTests { + + @Test + public void contextLoads() { + } + +}