diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index f08d73d..61193ff 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -1,12 +1,22 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 131d0d1..aaef994 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,8 +14,13 @@
springcloud-api
springcloud-provider-dept-8001
+ springcloud-provider-dept-8002
+ springcloud-provider-dept-8003
springcloud-api
springcloud-consumer-dept-80
+ springcloud-EurekaServer-7001
+ springcloud-EurekaServer-7002
+ springcloud-EurekaServer-7003
diff --git a/springcloud-EurekaServer-7001/pom.xml b/springcloud-EurekaServer-7001/pom.xml
new file mode 100644
index 0000000..cd6149e
--- /dev/null
+++ b/springcloud-EurekaServer-7001/pom.xml
@@ -0,0 +1,35 @@
+
+ 4.0.0
+
+ com.learning
+ springcloud
+ 1.0-SNAPSHOT
+
+
+ org.learning.springcloud
+ springcloud-EurekaServer-7001
+ jar
+
+ springcloud-EurekaServer
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka-server
+ 1.4.6.RELEASE
+
+
+
diff --git a/springcloud-EurekaServer-7001/src/main/java/org/learning/springcloud/Eureka7001Application.java b/springcloud-EurekaServer-7001/src/main/java/org/learning/springcloud/Eureka7001Application.java
new file mode 100644
index 0000000..155a815
--- /dev/null
+++ b/springcloud-EurekaServer-7001/src/main/java/org/learning/springcloud/Eureka7001Application.java
@@ -0,0 +1,19 @@
+package org.learning.springcloud;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+/**
+ * Hello world!
+ *
+ */
+@EnableEurekaServer
+@SpringBootApplication
+public class Eureka7001Application
+{
+ public static void main( String[] args )
+ {
+ SpringApplication.run(Eureka7001Application.class,args);
+ }
+}
diff --git a/springcloud-EurekaServer-7001/src/main/resources/application.yml b/springcloud-EurekaServer-7001/src/main/resources/application.yml
new file mode 100644
index 0000000..4aea890
--- /dev/null
+++ b/springcloud-EurekaServer-7001/src/main/resources/application.yml
@@ -0,0 +1,11 @@
+server:
+ port: 7001
+#eureka配置
+eureka:
+ instance:
+ hostname: eureka7001.com #Eureka服务端的实例名称
+ client:
+ fetch-registry: false #fetch-registry如果为false,表明自己为注册中心
+ register-with-eureka: false #表示是否向eureka注册中心注册自己
+ service-url:
+ defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
\ No newline at end of file
diff --git a/springcloud-EurekaServer-7001/src/test/java/org/learning/springcloud/AppTest.java b/springcloud-EurekaServer-7001/src/test/java/org/learning/springcloud/AppTest.java
new file mode 100644
index 0000000..e9b52c9
--- /dev/null
+++ b/springcloud-EurekaServer-7001/src/test/java/org/learning/springcloud/AppTest.java
@@ -0,0 +1,38 @@
+package org.learning.springcloud;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/springcloud-EurekaServer-7002/pom.xml b/springcloud-EurekaServer-7002/pom.xml
new file mode 100644
index 0000000..9354ca9
--- /dev/null
+++ b/springcloud-EurekaServer-7002/pom.xml
@@ -0,0 +1,35 @@
+
+ 4.0.0
+
+ com.learning
+ springcloud
+ 1.0-SNAPSHOT
+
+
+ org.learning.springcloud
+ springcloud-EurekaServer-7002
+ jar
+
+ springcloud-EurekaServer
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka-server
+ 1.4.6.RELEASE
+
+
+
diff --git a/springcloud-EurekaServer-7002/src/main/java/org/learning/springcloud/Eureka7002Application.java b/springcloud-EurekaServer-7002/src/main/java/org/learning/springcloud/Eureka7002Application.java
new file mode 100644
index 0000000..523bf0a
--- /dev/null
+++ b/springcloud-EurekaServer-7002/src/main/java/org/learning/springcloud/Eureka7002Application.java
@@ -0,0 +1,19 @@
+package org.learning.springcloud;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+/**
+ * Hello world!
+ *
+ */
+@EnableEurekaServer
+@SpringBootApplication
+public class Eureka7002Application
+{
+ public static void main( String[] args )
+ {
+ SpringApplication.run(Eureka7002Application.class,args);
+ }
+}
diff --git a/springcloud-EurekaServer-7002/src/main/resources/application.yml b/springcloud-EurekaServer-7002/src/main/resources/application.yml
new file mode 100644
index 0000000..b338ef3
--- /dev/null
+++ b/springcloud-EurekaServer-7002/src/main/resources/application.yml
@@ -0,0 +1,11 @@
+server:
+ port: 7002
+#eureka配置
+eureka:
+ instance:
+ hostname: eureka7002.com #Eureka服务端的实例名称
+ client:
+ fetch-registry: false #fetch-registry如果为false,表明自己为注册中心
+ register-with-eureka: false #表示是否向eureka注册中心注册自己
+ service-url:
+ defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
\ No newline at end of file
diff --git a/springcloud-EurekaServer-7002/src/test/java/org/learning/springcloud/AppTest.java b/springcloud-EurekaServer-7002/src/test/java/org/learning/springcloud/AppTest.java
new file mode 100644
index 0000000..e9b52c9
--- /dev/null
+++ b/springcloud-EurekaServer-7002/src/test/java/org/learning/springcloud/AppTest.java
@@ -0,0 +1,38 @@
+package org.learning.springcloud;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/springcloud-EurekaServer-7003/pom.xml b/springcloud-EurekaServer-7003/pom.xml
new file mode 100644
index 0000000..d7336b1
--- /dev/null
+++ b/springcloud-EurekaServer-7003/pom.xml
@@ -0,0 +1,35 @@
+
+ 4.0.0
+
+ com.learning
+ springcloud
+ 1.0-SNAPSHOT
+
+
+ org.learning.springcloud
+ springcloud-EurekaServer-7003
+ jar
+
+ springcloud-EurekaServer
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka-server
+ 1.4.6.RELEASE
+
+
+
diff --git a/springcloud-EurekaServer-7003/src/main/java/org/learning/springcloud/Eureka7003Application.java b/springcloud-EurekaServer-7003/src/main/java/org/learning/springcloud/Eureka7003Application.java
new file mode 100644
index 0000000..9096fdc
--- /dev/null
+++ b/springcloud-EurekaServer-7003/src/main/java/org/learning/springcloud/Eureka7003Application.java
@@ -0,0 +1,19 @@
+package org.learning.springcloud;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+/**
+ * Hello world!
+ *
+ */
+@EnableEurekaServer
+@SpringBootApplication
+public class Eureka7003Application
+{
+ public static void main( String[] args )
+ {
+ SpringApplication.run(Eureka7003Application.class,args);
+ }
+}
diff --git a/springcloud-EurekaServer-7003/src/main/resources/application.yml b/springcloud-EurekaServer-7003/src/main/resources/application.yml
new file mode 100644
index 0000000..3e2c951
--- /dev/null
+++ b/springcloud-EurekaServer-7003/src/main/resources/application.yml
@@ -0,0 +1,11 @@
+server:
+ port: 7003
+#eureka配置
+eureka:
+ instance:
+ hostname: eureka7003.com #Eureka服务端的实例名称
+ client:
+ fetch-registry: false #fetch-registry如果为false,表明自己为注册中心
+ register-with-eureka: false #表示是否向eureka注册中心注册自己
+ service-url:
+ defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
\ No newline at end of file
diff --git a/springcloud-EurekaServer-7003/src/test/java/org/learning/springcloud/AppTest.java b/springcloud-EurekaServer-7003/src/test/java/org/learning/springcloud/AppTest.java
new file mode 100644
index 0000000..e9b52c9
--- /dev/null
+++ b/springcloud-EurekaServer-7003/src/test/java/org/learning/springcloud/AppTest.java
@@ -0,0 +1,38 @@
+package org.learning.springcloud;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/springcloud-consumer-dept-80/pom.xml b/springcloud-consumer-dept-80/pom.xml
index 6e3d3b5..2a060c1 100644
--- a/springcloud-consumer-dept-80/pom.xml
+++ b/springcloud-consumer-dept-80/pom.xml
@@ -24,5 +24,28 @@
spring-boot-starter-web
+
+
+ org.springframework.cloud
+ spring-cloud-starter-ribbon
+ 1.4.6.RELEASE
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+ 1.4.6.RELEASE
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+ 2.2.2.RELEASE
+
+
+ org.springframework.cloud
+ spring-cloud-netflix-eureka-client
+
+
diff --git a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/ConsumerApplication.java b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/ConsumerApplication.java
index 6fcab49..0182cac 100644
--- a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/ConsumerApplication.java
+++ b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/ConsumerApplication.java
@@ -1,7 +1,15 @@
package org.learning.springcloud;
+import org.learning.springcloud.config.RibbonConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.netflix.ribbon.RibbonClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
@SpringBootApplication
+@EnableFeignClients
+@EnableEurekaClient //也作为Eureka的客户端,因为要向注册中心获取服务信息
+@RibbonClient(name = "springcloud-provider-dept", configuration = RibbonConfig.class)
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
diff --git a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/config/BeanConfig.java b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/config/BeanConfig.java
index 1cdfc22..72f8382 100644
--- a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/config/BeanConfig.java
+++ b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/config/BeanConfig.java
@@ -1,11 +1,20 @@
package org.learning.springcloud.config;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class BeanConfig {//@Configuration ==>spring applicationContext.xml
+ /**
+ * IRule
+ * RoundRobinRule 轮询
+ * RandomRule 随机
+ * AvailabilityFilteringRule 会先过滤掉跳闸或访问故障的服务,对剩下的进行轮询
+ * RetryRule 会先按照轮询获取服务,如果服务获取失败,则在指定时间内进行重试
+ */
@Bean
+ @LoadBalanced //在注册RestTemplate类时,使用注解,启动Ribbon实现负载均衡(默认轮询)
public RestTemplate addRestTemplate(){
return new RestTemplate();
}
diff --git a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/config/RibbonConfig.java b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/config/RibbonConfig.java
new file mode 100644
index 0000000..6c706fb
--- /dev/null
+++ b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/config/RibbonConfig.java
@@ -0,0 +1,21 @@
+package org.learning.springcloud.config;
+
+import com.netflix.loadbalancer.IRule;
+import com.netflix.loadbalancer.RoundRobinRule;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RibbonConfig {
+ /**
+ * IRule
+ * RoundRobinRule 轮询
+ * RandomRule 随机
+ * AvailabilityFilteringRule 会先过滤掉跳闸或访问故障的服务,对剩下的进行轮询
+ * RetryRule 会先按照轮询获取服务,如果服务获取失败,则在指定时间内进行重试
+ */
+ @Bean
+ public IRule rule(){
+ return new RoundRobinRule();
+ }
+}
\ No newline at end of file
diff --git a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/controller/DeptConsumerController.java b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/controller/DeptConsumerController.java
index bec8b62..9788f54 100644
--- a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/controller/DeptConsumerController.java
+++ b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/controller/DeptConsumerController.java
@@ -17,8 +17,10 @@ public class DeptConsumerController {
@Autowired
private RestTemplate restTemplate;
- private static final String REST_URL_PREFIX = "http://localhost:8001";
-
+ // 使用Ribbon时,服务用服务名来访问
+ // 既然是负载均衡,那必然是多台服务器的负载均衡,用IP访问就没有意义了,因此用负载均衡的注解时,不能用IP或者localhost,而应该用服务名。
+ //private static final String REST_URL_PREFIX = "http://localhost:8001";
+ private static final String REST_URL_PREFIX = "http://springcloud-provider-dept";
@RequestMapping("/consumer/dept/get/{id}")
public Dept get(@PathVariable("id") Long id){
return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id, Dept.class);
diff --git a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/controller/DeptConsumerFeignController.java b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/controller/DeptConsumerFeignController.java
new file mode 100644
index 0000000..a6071e3
--- /dev/null
+++ b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/controller/DeptConsumerFeignController.java
@@ -0,0 +1,28 @@
+package org.learning.springcloud.controller;
+
+import org.learning.springcloud.domain.Dept;
+import org.learning.springcloud.service.DeptFeignService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/consumer/dept")
+public class DeptConsumerFeignController {
+ // 消费者,不应该有service层
+ @Autowired
+ private DeptFeignService deptFeignService;
+
+ @RequestMapping("/feign/get/{id}")
+ public Dept get(@PathVariable("id") Long id){
+ return deptFeignService.findDeptById(id);
+ }
+
+ @RequestMapping("/feign/findAll")
+ public List findAll(){
+ return deptFeignService.findAll();
+ }
+}
\ No newline at end of file
diff --git a/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/service/DeptFeignService.java b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/service/DeptFeignService.java
new file mode 100644
index 0000000..a886a6a
--- /dev/null
+++ b/springcloud-consumer-dept-80/src/main/java/org/learning/springcloud/service/DeptFeignService.java
@@ -0,0 +1,21 @@
+package org.learning.springcloud.service;
+
+import org.learning.springcloud.domain.Dept;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+@Service
+//使用注解的方式来配置,完成对服务提供方的接口绑定
+@FeignClient(value="SPRINGCLOUD-PROVIDER-DEPT")
+public interface DeptFeignService {
+
+ @GetMapping("/dept/get/{id}")
+ Dept findDeptById(@PathVariable("id")Long id);
+
+ @GetMapping("/dept/findAll")
+ List findAll();
+}
diff --git a/springcloud-consumer-dept-80/src/main/resources/application.yml b/springcloud-consumer-dept-80/src/main/resources/application.yml
index 226708a..f00e70c 100644
--- a/springcloud-consumer-dept-80/src/main/resources/application.yml
+++ b/springcloud-consumer-dept-80/src/main/resources/application.yml
@@ -1,2 +1,9 @@
server:
- port: 80
\ No newline at end of file
+ port: 80
+
+#eureka配置
+eureka:
+ client:
+ register-with-eureka: false #不向注册中心注册自己
+ service-url:
+ defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
\ No newline at end of file
diff --git a/springcloud-provider-dept-8001/pom.xml b/springcloud-provider-dept-8001/pom.xml
index 5bc2dee..e188fc7 100644
--- a/springcloud-provider-dept-8001/pom.xml
+++ b/springcloud-provider-dept-8001/pom.xml
@@ -69,5 +69,16 @@
1.0-SNAPSHOT
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+ 1.4.6.RELEASE
+
+
+ org.springframework.boot
+ spring-boot-actuator
+
diff --git a/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/Dept8001Application.java b/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/Dept8001Application.java
new file mode 100644
index 0000000..64d5c89
--- /dev/null
+++ b/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/Dept8001Application.java
@@ -0,0 +1,19 @@
+package org.learning.springcloud;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+
+/**
+ * Hello world!
+ *
+ */
+@SpringBootApplication
+@EnableEurekaClient //在服务启动后自动注册到Eureka中
+@EnableDiscoveryClient //服务发现
+public class Dept8001Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Dept8001Application.class, args);
+ }
+}
\ No newline at end of file
diff --git a/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/DeptApplication.java b/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/DeptApplication.java
deleted file mode 100644
index ad7e388..0000000
--- a/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/DeptApplication.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.learning.springcloud;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * Hello world!
- *
- */
-@SpringBootApplication
-public class DeptApplication {
- public static void main(String[] args) {
- SpringApplication.run(DeptApplication.class, args);
- }
-}
\ No newline at end of file
diff --git a/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/controller/DeptController.java b/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/controller/DeptController.java
index 36889b5..620b514 100644
--- a/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/controller/DeptController.java
+++ b/springcloud-provider-dept-8001/src/main/java/org/learning/springcloud/controller/DeptController.java
@@ -4,6 +4,8 @@ import org.learning.springcloud.domain.Dept;
import org.learning.springcloud.result.ResultForm;
import org.learning.springcloud.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -19,6 +21,9 @@ public class DeptController {
@Autowired
public DeptService deptService;
+ @Autowired
+ private DiscoveryClient client;
+
@GetMapping("/get/{id}")
public Dept getDeptById(@PathVariable("id") Integer id){
@@ -27,6 +32,7 @@ public class DeptController {
// resultForm.setSuccess(false);
// resultForm.setMessage("Id不能为空!");
// }
+ System.out.println("---------- 8001->/get/{id}");
return deptService.getDeptById(id);
// if(dept == null){
// resultForm.setSuccess(false);
@@ -41,4 +47,21 @@ public class DeptController {
public List findAll(){
return deptService.findAll();
}
+
+ @RequestMapping("/discovery")
+ public Object discovery(){
+ //获取服务列表信息
+ List services = client.getServices();
+ System.out.println(services);
+ List instances = client.getInstances("springcloud-provider-dept");
+ for (ServiceInstance instance : instances) {
+ System.out.println(
+ instance.getHost()+"\t"+
+ instance.getPort()+"\t"+
+ instance.getUri()+"\t"+
+ instance.getServiceId()+"\t"
+ );
+ }
+ return client;
+ }
}
diff --git a/springcloud-provider-dept-8001/src/main/resources/application.yml b/springcloud-provider-dept-8001/src/main/resources/application.yml
index a899ee7..c881777 100644
--- a/springcloud-provider-dept-8001/src/main/resources/application.yml
+++ b/springcloud-provider-dept-8001/src/main/resources/application.yml
@@ -11,4 +11,14 @@ spring:
username: postgres
password: 123
application:
- name: springcloud-provider-dept
\ No newline at end of file
+ name: springcloud-provider-dept #提供的是同一个服务所以应用名称保持不变
+#添加客户端Eureka的配置,服务注册到哪里
+eureka:
+ client:
+ service-url:
+ defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
+ instance:
+ instance-id: springcloud-provider-dept-8001 #修改Eureka上的默认描述信息
+info:
+ app.name: provider001
+# company.name: www.magicCubeSat.com
\ No newline at end of file
diff --git a/springcloud-provider-dept-8002/pom.xml b/springcloud-provider-dept-8002/pom.xml
new file mode 100644
index 0000000..7c121fc
--- /dev/null
+++ b/springcloud-provider-dept-8002/pom.xml
@@ -0,0 +1,84 @@
+
+ 4.0.0
+
+ com.learning
+ springcloud
+ 1.0-SNAPSHOT
+
+
+ org.learning
+ springcloud-provider-dept-8002
+ jar
+
+ springcloud-provider-dept-8001
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+
+ junit
+ junit
+
+
+
+ org.postgresql
+ postgresql
+
+
+ com.alibaba
+ druid
+
+
+ org.projectlombok
+ lombok
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+
+
+
+ org.springframework.boot
+ spring-boot-test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+
+
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+ 2.1.0
+
+
+
+ org.learning
+ springcloud-api
+ 1.0-SNAPSHOT
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+ 1.4.6.RELEASE
+
+
+ org.springframework.boot
+ spring-boot-actuator
+
+
+
diff --git a/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/Dept8002Application.java b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/Dept8002Application.java
new file mode 100644
index 0000000..f07c6a9
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/Dept8002Application.java
@@ -0,0 +1,19 @@
+package org.learning.springcloud;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+
+/**
+ * Hello world!
+ *
+ */
+@SpringBootApplication
+@EnableEurekaClient //在服务启动后自动注册到Eureka中
+@EnableDiscoveryClient //服务发现
+public class Dept8002Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Dept8002Application.class, args);
+ }
+}
\ No newline at end of file
diff --git a/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/controller/DeptController.java b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/controller/DeptController.java
new file mode 100644
index 0000000..592e603
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/controller/DeptController.java
@@ -0,0 +1,65 @@
+package org.learning.springcloud.controller;
+
+import org.learning.springcloud.domain.Dept;
+import org.learning.springcloud.service.DeptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/dept")
+public class DeptController {
+
+ @Autowired
+ public DeptService deptService;
+
+ @Autowired
+ private DiscoveryClient client;
+
+ @GetMapping("/get/{id}")
+ public Dept getDeptById(@PathVariable("id") Integer id){
+
+// ResultForm resultForm = new ResultForm();
+// if(id == null){
+// resultForm.setSuccess(false);
+// resultForm.setMessage("Id不能为空!");
+// }
+ System.out.println("--------- 8002->/get/{id}");
+ return deptService.getDeptById(id);
+// if(dept == null){
+// resultForm.setSuccess(false);
+// resultForm.setMessage("没有找到id为:"+id+"的部门!");
+// }else{
+// resultForm.setSuccess(true);
+// resultForm.setContent(dept);
+// }
+// return resultForm;
+ }
+ @GetMapping("/findAll")
+ public List findAll(){
+ return deptService.findAll();
+ }
+
+ @RequestMapping("/discovery")
+ public Object discovery(){
+ //获取服务列表信息
+ List services = client.getServices();
+ System.out.println(services);
+ List instances = client.getInstances("springcloud-provider-dept");
+ for (ServiceInstance instance : instances) {
+ System.out.println(
+ instance.getHost()+"\t"+
+ instance.getPort()+"\t"+
+ instance.getUri()+"\t"+
+ instance.getServiceId()+"\t"
+ );
+ }
+ return client;
+ }
+}
diff --git a/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/mapper/DeptMapper.java b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/mapper/DeptMapper.java
new file mode 100644
index 0000000..225c4a7
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/mapper/DeptMapper.java
@@ -0,0 +1,14 @@
+package org.learning.springcloud.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.learning.springcloud.domain.Dept;
+
+import java.util.List;
+
+@Mapper
+public interface DeptMapper {
+ Dept getDeptById(@Param("id") Integer id);
+
+ List findAll();
+}
diff --git a/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/service/DeptService.java b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/service/DeptService.java
new file mode 100644
index 0000000..77ef78a
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/service/DeptService.java
@@ -0,0 +1,11 @@
+package org.learning.springcloud.service;
+
+import org.learning.springcloud.domain.Dept;
+
+import java.util.List;
+
+public interface DeptService {
+ Dept getDeptById(Integer id);
+
+ List findAll();
+}
diff --git a/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/service/impl/DeptServiceImpl.java b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/service/impl/DeptServiceImpl.java
new file mode 100644
index 0000000..3eb3f81
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/java/org/learning/springcloud/service/impl/DeptServiceImpl.java
@@ -0,0 +1,25 @@
+package org.learning.springcloud.service.impl;
+
+import org.learning.springcloud.domain.Dept;
+import org.learning.springcloud.service.DeptService;
+import org.learning.springcloud.mapper.DeptMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class DeptServiceImpl implements DeptService {
+ @Autowired
+ public DeptMapper deptMapper;
+ @Override
+ public Dept getDeptById(Integer id) {
+
+ return deptMapper.getDeptById(id);
+ }
+
+ @Override
+ public List findAll() {
+ return deptMapper.findAll();
+ }
+}
diff --git a/springcloud-provider-dept-8002/src/main/resources/application.yml b/springcloud-provider-dept-8002/src/main/resources/application.yml
new file mode 100644
index 0000000..998910f
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/resources/application.yml
@@ -0,0 +1,24 @@
+server:
+ port: 8002
+mybatis:
+ config-location: classpath:mybatis/mybatis-config.xml
+ type-aliases-package: com.learning.springcloud.domian
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://localhost:5432/postgres
+ username: postgres
+ password: 123
+ application:
+ name: springcloud-provider-dept #提供的是同一个服务所以应用名称保持不变
+#添加客户端Eureka的配置,服务注册到哪里
+eureka:
+ client:
+ service-url:
+ defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
+ instance:
+ instance-id: springcloud-provider-dept-8002 #修改Eureka上的默认描述信息
+info:
+ app.name: provider002
+# company.name: www.magicCubeSat.com
\ No newline at end of file
diff --git a/springcloud-provider-dept-8002/src/main/resources/mapper/DeptMapper.xml b/springcloud-provider-dept-8002/src/main/resources/mapper/DeptMapper.xml
new file mode 100644
index 0000000..dc91b9c
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/resources/mapper/DeptMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/springcloud-provider-dept-8002/src/main/resources/mybatis/mybatis-config.xml b/springcloud-provider-dept-8002/src/main/resources/mybatis/mybatis-config.xml
new file mode 100644
index 0000000..8d04583
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/main/resources/mybatis/mybatis-config.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/springcloud-provider-dept-8002/src/test/java/org/learning/springcloud/AppTest.java b/springcloud-provider-dept-8002/src/test/java/org/learning/springcloud/AppTest.java
new file mode 100644
index 0000000..e9b52c9
--- /dev/null
+++ b/springcloud-provider-dept-8002/src/test/java/org/learning/springcloud/AppTest.java
@@ -0,0 +1,38 @@
+package org.learning.springcloud;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/springcloud-provider-dept-8003/pom.xml b/springcloud-provider-dept-8003/pom.xml
new file mode 100644
index 0000000..5b125c7
--- /dev/null
+++ b/springcloud-provider-dept-8003/pom.xml
@@ -0,0 +1,84 @@
+
+ 4.0.0
+
+ com.learning
+ springcloud
+ 1.0-SNAPSHOT
+
+
+ org.learning
+ springcloud-provider-dept-8003
+ jar
+
+ springcloud-provider-dept-8001
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+
+ junit
+ junit
+
+
+
+ org.postgresql
+ postgresql
+
+
+ com.alibaba
+ druid
+
+
+ org.projectlombok
+ lombok
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+
+
+
+ org.springframework.boot
+ spring-boot-test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+
+
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+ 2.1.0
+
+
+
+ org.learning
+ springcloud-api
+ 1.0-SNAPSHOT
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+ 1.4.6.RELEASE
+
+
+ org.springframework.boot
+ spring-boot-actuator
+
+
+
diff --git a/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/Dept8003Application.java b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/Dept8003Application.java
new file mode 100644
index 0000000..619bba1
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/Dept8003Application.java
@@ -0,0 +1,19 @@
+package org.learning.springcloud;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+
+/**
+ * Hello world!
+ *
+ */
+@SpringBootApplication
+@EnableEurekaClient //在服务启动后自动注册到Eureka中
+@EnableDiscoveryClient //服务发现
+public class Dept8003Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Dept8003Application.class, args);
+ }
+}
\ No newline at end of file
diff --git a/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/controller/DeptController.java b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/controller/DeptController.java
new file mode 100644
index 0000000..4745ebd
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/controller/DeptController.java
@@ -0,0 +1,67 @@
+package org.learning.springcloud.controller;
+
+import org.learning.springcloud.domain.Dept;
+import org.learning.springcloud.result.ResultForm;
+import org.learning.springcloud.service.DeptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/dept")
+public class DeptController {
+
+ @Autowired
+ public DeptService deptService;
+
+ @Autowired
+ private DiscoveryClient client;
+
+ @GetMapping("/get/{id}")
+ public Dept getDeptById(@PathVariable("id") Integer id){
+
+// ResultForm resultForm = new ResultForm();
+// if(id == null){
+// resultForm.setSuccess(false);
+// resultForm.setMessage("Id不能为空!");
+// }
+ System.out.println("------------ 8003->/get/{id}");
+ return deptService.getDeptById(id);
+// if(dept == null){
+// resultForm.setSuccess(false);
+// resultForm.setMessage("没有找到id为:"+id+"的部门!");
+// }else{
+// resultForm.setSuccess(true);
+// resultForm.setContent(dept);
+// }
+// return resultForm;
+ }
+ @GetMapping("/findAll")
+ public List findAll(){
+ return deptService.findAll();
+ }
+
+ @RequestMapping("/discovery")
+ public Object discovery(){
+ //获取服务列表信息
+ List services = client.getServices();
+ System.out.println(services);
+ List instances = client.getInstances("springcloud-provider-dept");
+ for (ServiceInstance instance : instances) {
+ System.out.println(
+ instance.getHost()+"\t"+
+ instance.getPort()+"\t"+
+ instance.getUri()+"\t"+
+ instance.getServiceId()+"\t"
+ );
+ }
+ return client;
+ }
+}
diff --git a/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/mapper/DeptMapper.java b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/mapper/DeptMapper.java
new file mode 100644
index 0000000..225c4a7
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/mapper/DeptMapper.java
@@ -0,0 +1,14 @@
+package org.learning.springcloud.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.learning.springcloud.domain.Dept;
+
+import java.util.List;
+
+@Mapper
+public interface DeptMapper {
+ Dept getDeptById(@Param("id") Integer id);
+
+ List findAll();
+}
diff --git a/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/service/DeptService.java b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/service/DeptService.java
new file mode 100644
index 0000000..77ef78a
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/service/DeptService.java
@@ -0,0 +1,11 @@
+package org.learning.springcloud.service;
+
+import org.learning.springcloud.domain.Dept;
+
+import java.util.List;
+
+public interface DeptService {
+ Dept getDeptById(Integer id);
+
+ List findAll();
+}
diff --git a/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/service/impl/DeptServiceImpl.java b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/service/impl/DeptServiceImpl.java
new file mode 100644
index 0000000..3eb3f81
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/java/org/learning/springcloud/service/impl/DeptServiceImpl.java
@@ -0,0 +1,25 @@
+package org.learning.springcloud.service.impl;
+
+import org.learning.springcloud.domain.Dept;
+import org.learning.springcloud.service.DeptService;
+import org.learning.springcloud.mapper.DeptMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class DeptServiceImpl implements DeptService {
+ @Autowired
+ public DeptMapper deptMapper;
+ @Override
+ public Dept getDeptById(Integer id) {
+
+ return deptMapper.getDeptById(id);
+ }
+
+ @Override
+ public List findAll() {
+ return deptMapper.findAll();
+ }
+}
diff --git a/springcloud-provider-dept-8003/src/main/resources/application.yml b/springcloud-provider-dept-8003/src/main/resources/application.yml
new file mode 100644
index 0000000..ebf57b3
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/resources/application.yml
@@ -0,0 +1,24 @@
+server:
+ port: 8003
+mybatis:
+ config-location: classpath:mybatis/mybatis-config.xml
+ type-aliases-package: com.learning.springcloud.domian
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://localhost:5432/postgres
+ username: postgres
+ password: 123
+ application:
+ name: springcloud-provider-dept #提供的是同一个服务所以应用名称保持不变
+#添加客户端Eureka的配置,服务注册到哪里
+eureka:
+ client:
+ service-url:
+ defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
+ instance:
+ instance-id: springcloud-provider-dept-8003 #修改Eureka上的默认描述信息
+info:
+ app.name: provider003
+# company.name: www.magicCubeSat.com
\ No newline at end of file
diff --git a/springcloud-provider-dept-8003/src/main/resources/mapper/DeptMapper.xml b/springcloud-provider-dept-8003/src/main/resources/mapper/DeptMapper.xml
new file mode 100644
index 0000000..dc91b9c
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/resources/mapper/DeptMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/springcloud-provider-dept-8003/src/main/resources/mybatis/mybatis-config.xml b/springcloud-provider-dept-8003/src/main/resources/mybatis/mybatis-config.xml
new file mode 100644
index 0000000..8d04583
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/main/resources/mybatis/mybatis-config.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/springcloud-provider-dept-8003/src/test/java/org/learning/springcloud/AppTest.java b/springcloud-provider-dept-8003/src/test/java/org/learning/springcloud/AppTest.java
new file mode 100644
index 0000000..e9b52c9
--- /dev/null
+++ b/springcloud-provider-dept-8003/src/test/java/org/learning/springcloud/AppTest.java
@@ -0,0 +1,38 @@
+package org.learning.springcloud;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}