一、eureka-server服务中心项目不再创建
二、eureka-common-empdept公共组件项目不再掩饰
三、创建eureka-client-provider-empdept-one提供者项目
3.1 结构如下
pom.xml文件内容如下:
1
2
3 cn.kgc
4 eureka-common-empdept
5 0.0.1-SNAPSHOT
6
7
8 org.springframework.boot
9 spring-boot-starter-jdbc
10
11
12 org.springframework.boot
13 spring-boot-starter-web
14
15
16 org.mybatis.spring.boot
17 mybatis-spring-boot-starter
18 2.1.0
19
20
21 org.springframework.cloud
22 spring-cloud-starter-netflix-eureka-client
23
24
25
26 mysql
27 mysql-connector-java
28 5.1.38
29
30
31 org.springframework.boot
32 spring-boot-starter-test
33 test
34
35
pom.xml
3.2 DeptMapper.java
1 packagecn.kgc.mapper;2
3 importcn.kgc.vo.Dept;4 importorg.apache.ibatis.annotations.Select;5
6 importjava.util.List;7
8 /**
9 * Created by Administrator on 2019/8/29.10 */
11 public interfaceDeptMapper {12 @Select("select * from dept")13 ListoptionData();14 }
DeptMapper.java
3.3EmpMapper.java
1 packagecn.kgc.mapper;2
3 importcn.kgc.vo.Emp;4 importorg.apache.ibatis.annotations.Select;5
6 importjava.util.List;7 importjava.util.Map;8
9 /**
10 * Created by Administrator on 2019/8/29.11 */
12 public interfaceEmpMapper {13 List>showData(Emp emp);14 }
EmpMapper.java
3.4EmpMapper.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
6
7 select d.dname,d.loc,e.* from emp e,dept d where e.deptno=d.deptno8
9 and e.empno=#{empno}10
11
12 and e.deptno=#{deptno}13
14
15
EmpMapper.xml
3.5DeptService.java
1 packagecn.kgc.service;2
3 importcn.kgc.vo.Dept;4 importorg.apache.ibatis.annotations.Select;5
6 importjava.util.List;7
8 /**
9 * Created by Administrator on 2019/8/29.10 */
11 public interfaceDeptService {12 ListoptionData();13 }
DeptService.java
3.6 DeptServiceImpl.java
1 packagecn.kgc.service;2
3 importcn.kgc.mapper.DeptMapper;4 importcn.kgc.vo.Dept;5 importorg.springframework.beans.factory.annotation.Autowired;6 importorg.springframework.stereotype.Service;7
8 importjava.util.List;9
10 @Service11 public class DeptServiceImpl implementsDeptService{12
13 @Autowired14 privateDeptMapper deptMapper;15
16 public ListoptionData() {17 returndeptMapper.optionData();18 }19 }
DeptServiceImpl.java
3.7 EmpService.java
1 packagecn.kgc.service;2
3 importcn.kgc.vo.Emp;4
5 importjava.util.List;6 importjava.util.Map;7
8 /**
9 * Created by Administrator on 2019/8/29.10 */
11 public interfaceEmpService {12 List>showData(Emp emp);13 }
EmpService.java
3.8 EmpServiceImpl.java
1 packagecn.kgc.service;2
3 importcn.kgc.mapper.EmpMapper;4 importcn.kgc.vo.Emp;5 importorg.springframework.beans.factory.annotation.Autowired;6 importorg.springframework.stereotype.Service;7 importorg.springframework.transaction.annotation.Transactional;8
9 importjava.util.List;10 importjava.util.Map;11
12 @Service13 @Transactional14 public class EmpServiceImpl implementsEmpService{15 @Autowired16 privateEmpMapper empMapper;17
18 public List>showData(Emp emp) {19 returnempMapper.showData(emp);20 }21 }
EmpServiceImpl.java
3.9 CenterController,java
1 packagecn.kgc.controller;2
3 importcn.kgc.mapper.DeptMapper;4 importcn.kgc.mapper.EmpMapper;5 importcn.kgc.service.DeptService;6 importcn.kgc.service.EmpService;7 importcn.kgc.vo.Dept;8 importcn.kgc.vo.Emp;9 importorg.slf4j.Logger;10 importorg.slf4j.LoggerFactory;11 importorg.springframework.beans.factory.annotation.Autowired;12 importorg.springframework.web.bind.annotation.RequestBody;13 importorg.springframework.web.bind.annotation.RequestMapping;14 importorg.springframework.web.bind.annotation.RequestParam;15 importorg.springframework.web.bind.annotation.RestController;16
17 importjava.util.List;18 importjava.util.Map;19
20 @RestController21 public classCenterController {22
23 @Autowired24 privateEmpService empService;25
26 @Autowired27 privateDeptService deptService;28
29 private Logger logger= LoggerFactory.getLogger(CenterController.class);30
31 @RequestMapping("/ribbon.do")32 public String ribbonTest(@RequestParam("count") Integer count){33 logger.info("provider>>> "+count+" <<
37 @RequestMapping("/option.do")38 public ListoptionData() {39 returndeptService.optionData();40 }41
42 @RequestMapping("/data.do")43 public List>showData(@RequestBody Emp emp) {44 returnempService.showData(emp);45 }46 }
CenterController.java
3.10 启动类的设置
1 packagecn.kgc;2
3 importorg.mybatis.spring.annotation.MapperScan;4 importorg.springframework.boot.SpringApplication;5 importorg.springframework.boot.autoconfigure.SpringBootApplication;6 importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;7
8 @MapperScan("cn.kgc.mapper")9 @EnableEurekaClient10 @SpringBootApplication11 public classEurekaClientProviderEmpdeptOneApplication {12
13 public static voidmain(String[] args) {14 SpringApplication.run(EurekaClientProviderEmpdeptOneApplication.class, args);15 }16
17 }
启动类
3.11 编写属性文件
1 spring.application.name=provider-empdept2
3 server.port=8762
4
5 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
6
7 spring.datasource.driver-class-name=com.mysql.jdbc.Driver8 spring.datasource.url=jdbc:mysql://192.168.117.145:3306/kh66
9 spring.datasource.username=root10 spring.datasource.password=ok11
12 mybatis.type-aliases-package=cn.kgc.vo13
14 mybatis.mapper-locations=classpath:mapper/*.xml
application.properties
3.12 启动eureka-server、eureka-client-provider-empdept-one 查看结果
四、创建eureka-client-provider-empdept-two提供者项目,所有的代码模块和eureka-client-provider-empdept-one一模一样,只是端口号不一样即可
五、创建eureka-client-consumer-empdept-p-one消费者项目,
5.1 结构如下
5.2 编写 EmpDeptProviderFeign.java
1 packagecn.kgc.fegin;2
3 importcn.kgc.vo.Dept;4 importcn.kgc.vo.Emp;5 importorg.springframework.cloud.openfeign.FeignClient;6 importorg.springframework.web.bind.annotation.RequestBody;7 importorg.springframework.web.bind.annotation.RequestMapping;8 importorg.springframework.web.bind.annotation.RequestParam;9
10 importjava.util.List;11 importjava.util.Map;12
13 @FeignClient("provider-empdept")14 public interfaceEmpDeptProviderFeign {15
16 @RequestMapping("/ribbon.do")17 public String ribbonTest(@RequestParam("count") Integer count);18
19 @RequestMapping("/option.do")20 publicString optionData();21
22 @RequestMapping("/data.do")23 publicString showData(@RequestBody Emp emp);24 }
EmpDeptProviderFeign.java
5.3 CenterController.java
1 packagecn.kgc.fegin;2
3 importcn.kgc.vo.Dept;4 importcn.kgc.vo.Emp;5 importorg.springframework.cloud.openfeign.FeignClient;6 importorg.springframework.web.bind.annotation.RequestBody;7 importorg.springframework.web.bind.annotation.RequestMapping;8 importorg.springframework.web.bind.annotation.RequestParam;9
10 importjava.util.List;11 importjava.util.Map;12
13 @FeignClient("provider-empdept")14 public interfaceEmpDeptProviderFeign {15
16 @RequestMapping("/ribbon.do")17 public String ribbonTest(@RequestParam("count") Integer count);18
19 @RequestMapping("/option.do")20 publicString optionData();21
22 @RequestMapping("/data.do")23 publicString showData(@RequestBody Emp emp);24 }
CenterController.java
5.4 application.properties属性文件编写
1 spring.application.name=consumer-empdept-p-one2
3 server.port=8764
4
5 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
application.properties
5.5 编写启动类
1 packagecn.kgc;2
3 importorg.springframework.boot.SpringApplication;4 importorg.springframework.boot.autoconfigure.SpringBootApplication;5 importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;6 importorg.springframework.cloud.netflix.ribbon.RibbonClient;7 importorg.springframework.cloud.openfeign.EnableFeignClients;8
9 @EnableFeignClients10 @EnableEurekaClient11 @SpringBootApplication12 public classEurekaClientConsumerEmpdeptPOneApplication {13
14 public static voidmain(String[] args) {15 SpringApplication.run(EurekaClientConsumerEmpdeptPOneApplication.class, args);16 }17
18 }
启动类
5.6 启动项目顺序为:eureka-server、eureka-client-provider-empdept-one、eureka-client-provider-empdept-two、eureka-client-consumer-empdept-p-one
因为没有设置负载均衡策略,因此他会按照默认方式既 轮询策略进行调用,
5.7 再次选择配置ribbon负载均衡策略为随机分配,再看效果,属性文件设置如下
1 spring.application.name=consumer-empdept-p-one2
3 server.port=8764
4
5 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
6
7 #随机分配策略8 provider-empdept.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
application.properties
5.8 再次按照刚才的启动顺序启动,再来查看
可以挨个把负载均衡策略试一下