From 23a8e246b715d85999b6a2c90acaa0a5ce1a04c2 Mon Sep 17 00:00:00 2001 From: fxb Date: Mon, 17 Dec 2018 21:47:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E7=AF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../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 | 34 ++++++++++ .../src/main/resources/application.properties | 0 .../src/main/resources/bootstrap.yml | 18 +++++ .../OrganizationserviceApplicationTests.java | 16 +++++ 10 files changed, 232 insertions(+) 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/第三篇所用代码/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..39d2327 --- /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..38f0059 --- /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..c573d1a --- /dev/null +++ b/springcloud/第三篇所用代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java @@ -0,0 +1,34 @@ +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; +import java.util.concurrent.TimeUnit; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2018/11/22 18:23 + */ +@RestController +public class OrganizationController { + + private static int count=1; + + @GetMapping(value = "/organization/{orgId}") + public Object getOrganizationInfo(@PathVariable("orgId") String orgId) throws Exception{ + if(count%2==0){ + TimeUnit.SECONDS.sleep(2); + } + count++; + 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..d8e721f --- /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() { + } + +}