








支持注解



热部署分为五步 :

- jar 包
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
2.添加插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
-
修改配置
4.command + SHIFT + A --> 查找Registry --> 找到打钩

- 重启idea

1. Sprint cloud 集成 eureka 注册中





1-1.eureka 服务端
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- 引入自定义的api通用包,可以使用Payment支付Entity -->
<dependency>
<artifactId>springcloud-api-common</artifactId>
<groupId>com.tina.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- boot web actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 一般通用配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
============================================================
@SpringBootApplication//表明是一个启动类 相当于@Configuration + @EnableAutoConfiguration+@ComponentScan
@EnableEurekaServer //表明是eureka的服务方
public class Eureka7001Application {
public static void main(String[] args) {
SpringApplication.run(Eureka7001Application.class,args);
}
}
============================================================
server:
port: 7001
spring:
application:
name: springcloud-eureka-server7001
eureka:
instance:
hostname: springcloud-eureka-server7001 #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己
fetch-registry: false #false表示自己端就是注册中心
service-url:
#defaultZone: http://eureka7001.com:7001/eureka/ #单机
defaultZone: http://springcloud-eureka-server7002:7002/eureka/ #集群
server:
# 关闭自我保护机制,保证不可用服务被及时剔除
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000
1-2.eureka client
a) provier
<dependencies>
<!-- springboot 2.2.2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springcloud cloud Hoxton.SR1 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springcloud cloud alibaba 2.1.0.RELEASE -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
============================================================
#设置端口号
server:
port: 8003
##设置name
spring:
#配置热部署
devtools:
restart:
enabled: true
application:
name: springcloud-payment-service
#配置mysql数据源
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://152.136.27.48:3306/d_xiaokai?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
#配置mybatis参数
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.tina.aip.common.entity.Payment
configuration:
map-underscore-to-camel-case: true #设置下划线
#注册到eureka
eureka:
client:
register-with-eureka: true #是否将自己注册到注册中心,集群必须设置为true配合ribbon
fetch-registry: true #是否从服务端抓取已有的注册信息
service-url:
defaultZone: http://springcloud-eureka-server7001:7001/eureka #,http://eureka7002.com:7002/eureka
instance:
instance-id: payment8003
prefer-ip-address: true #访问路径可以显示IP地址
lease-renewal-interval-in-seconds: 1 #向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
lease-expiration-duration-in-seconds: 2 #收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除
============================================================
@SpringBootApplication //表明是一个启动类
@EnableEurekaClient //表明是eureka客户端
@EnableSwagger2 //开启swagger测试
@EnableDiscoveryClient // 开启发现注册在eureka上的其他实例
public class PaymentApplication8003 {
public static void main(String[] args) {
SpringApplication.run(PaymentApplication8003.class,args);
}
}
============================================================
@RestController
@Slf4j
@Api(value = "Payment模块")
@RequestMapping("/payment")
public class PaymentController {
@Resource
private PaymentService paymentService ;
@Value("${server.port}")
private String port ;
@Resource
private DiscoveryClient discoveryClient;
//获取eureka注册中的所有的实例
@GetMapping(value = "/discovery")
public Object discovery(){
//1. 获取eureka中所有的实例
List<String> services = discoveryClient.getServices();
for (final String service : services) {
log.info("--eureka注册中的所有实例为-"+service);
}
//2.获取eureka中名为springcloud-payment-service相关实例 打印出来
List<ServiceInstance> instances = discoveryClient.getInstances("springcloud-payment-service");
for (final ServiceInstance instance : instances) {
log.info("eureka中的ID为:"+instance.getInstanceId()+",host为"+instance.getHost()+",post端口号"+instance.getPort()+",URL路径为"+instance.getUri());
}
return this.discoveryClient;
}
//根据ID查询的方法
@GetMapping(value = "/get")
public CommonResult getPaymentById(@RequestParam Long id){
Payment payment = paymentService.getPaymentById(id);
if(payment != null){
return new CommonResult(200,"查询数据成功"+port,payment);
}else {
return new CommonResult(444,"查询数据失败"+port,null);
}
}
//添加的方法
@PostMapping(value = "/create")
public CommonResult create(@RequestBody Payment payment){
int result = paymentService.create(payment);
if(result>0){
return new CommonResult(200,"插入数据成功"+port,null);
}else {
return new CommonResult(444,"插入数据失败"+port,null);
}
}
}
a) provier
<dependencies>
<!--添加common 通用包-->
<dependency>
<artifactId>springcloud-api-common</artifactId>
<groupId>com.tina.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--添加swagger2依赖的jar包-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引入eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
</dependencies>
============================================================
server:
port: 8002
eureka:
client:
register-with-eureka: true #是否将自己注册到注册中心,集群必须设置为true配合ribbon
fetch-registry: true #是否从服务端抓取已有的注册信息
service-url:
defaultZone: http://springcloud-eureka-server7001:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: order8002
prefer-ip-address: true #访问路径可以显示IP地址
spring:
application:
name: springcloud-consumer-order
============================================================
@SpringBootApplication
@EnableSwagger2
@EnableEurekaClient //表明是eureka的客户端
public class OrderApplicaiton8002 {
public static void main(String[] args) {
SpringApplication.run(OrderApplicaiton8002.class,args);
}
}
============================================================
@RestController //等于@Controller + @ResponseBody
@Slf4j
@RequestMapping(value = "/order")
@Api(value = "order模块")
public class OrderController {
@Resource
private RestTemplate restTemplate ;
//private static final String BASE_URL = "http://localhost:8001/";
private static final String BASE_URL = "http://SPRINGCLOUD-PAYMENT-SERVICE";
@PostMapping(value = "/create")
public CommonResult create(@RequestBody Payment payment){
return restTemplate.postForObject(BASE_URL+"/payment/create",payment,CommonResult.class);
}
@GetMapping(value = "/get")
public CommonResult get(@RequestParam Long id){
String url = BASE_URL+"/payment/get/?id="+id ;
log.info("url的值为:"+url);
return restTemplate.getForObject(url,CommonResult.class);
}
}
2. Sprint cloud 集成Zookeeper




已经在服务器上安装的是zookeeper-3.4.14 ,开启客户端和服务端
2 -1 . 服务消费者
pom.xml:
<dependencies>
<dependency>
<artifactId>springcloud-api-common</artifactId>
<groupId>com.tina.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--添加swagger2依赖的jar包-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- 引入zookeeper客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
</dependency>
</dependencies>
============================================================
配置文件:
server:
port: 8002
# 服务别名---zookeeper注册中心名称
spring:
application:
name: springcloud-consumer-order8002
cloud:
zookeeper:
connect-string: 152.136.27.48:2181
max-retries: 10
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://152.136.27.48:3306/d_xiaokai?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
============================================================
启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableSwagger2
public class OrderZKApplicaiton8002 {
public static void main(String[] args) {
SpringApplication.run(OrderZKApplicaiton8002.class,args);
}
}
============================================================
控制类
@RestController
@RequestMapping(value = "order")
@Api(value = "Order模块")
@Slf4j
public class OrderController {
@Resource
private RestTemplate restTemplate ;
@Value("${server.port}")
private String port;
private static final String BASE_URL = "http://springcloud-provider-payment8004";
@GetMapping(value = "get")
public String get(){
String url = BASE_URL+"/payment/getZk";
log.info(url);
return restTemplate.getForObject(url, String.class);
}
}
2 -2 . 服务提供者
pom.xml:
<dependencies>
<!--添加common 通用包-->
<dependency>
<artifactId>springcloud-api-common</artifactId>
<groupId>com.tina.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--添加swagger2依赖的jar包-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<!-- 引入zookeeper客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
</dependency>
</dependencies>
============================================================
配置文件:
server:
port: 8004
# 服务别名---zookeeper注册中心名称
spring:
application:
name: springcloud-provider-payment8004
cloud:
zookeeper:
connect-string: 152.136.27.48:2181
max-retries: 10
============================================================
启动类
@SpringBootApplication
@EnableSwagger2
@EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时 注册服务
public class PaymentApplication8004 {
public static void main(String[] args) {
SpringApplication.run(PaymentApplication8004.class,args);
}
}
============================================================
控制类
@RestController
@Slf4j
@Api(value = "Payment模块8004")
@RequestMapping("/payment")
public class PaymentController {
@Value("${server.port}")
private String port;
@GetMapping(value="/getZk")
public String paymenZk(){
return "Payment模块8004"+port+ UUID.randomUUID().toString();
}
}
2. Sprint cloud 集成consul



三中注册中心的区别 :

CAP 原则


image.png
3. Sprint cloud 集成ribbon








Ribbon负载均衡的策略算法:


另行设置rribbon 注意事项




Ribbon中默认的的轮询负载策略的原理

手动编写一个轮询策略

第一步 将配置类中注解@LoadBanlance注释
第二步: 在启动类下新建一个接口及其实现类
接口
public interface LoadBalancer {
ServiceInstance instance(List<ServiceInstance> serviceInstances);
}
============================================================实现类
**
* (this.atomicInteger.compareAndSet(current,next)) 的用法
* 在这个循环条件下,假设有多个线程在同时执行这段代码,
* 即使有一个线程在产生了新值之后,它还需要让它自己产生的新值与旧值比较之后才能决定要不要这个新值。
* 也就是说,如果oldValue是10,而产生的新值是20,然后程序还没到while的时候,有其他线程修改了newValue值,
* 那当这个线程到while判断的时候,会出现comparAndSet方法的预期值不跟实际值一样,导致方法返回false,
* 直到没有其他线程干扰。这时就确定了新产生的值。
* */
@Component
@Slf4j
public class MyLB implements LoadBalancer {
//定义一个常量
private AtomicInteger atomicInteger = new AtomicInteger(0);
//设置两个变量 current,next 并赋值
public final int getAndIncrement(){
int current;
int next;
do{
current = this.atomicInteger.get();
next = (current>2147483647) ? (0) : (current+1) ;
}while ( !(this.atomicInteger.compareAndSet(current,next)) );
log.info("next的值为:"+ next);
return next;
}
@Override
public ServiceInstance instance(List<ServiceInstance> serviceInstances) {
int index = getAndIncrement() % serviceInstances.size();
return serviceInstances.get(index);
}
}
第三步 控制类
/**
* 测试自定义的轮询算法策略
*/
@Resource
private LoadBalancer loadBalancer ;
@Resource
private DiscoveryClient discoveryClient ;
@GetMapping(value = "/getRB")
public String getRB(@RequestParam Long id){
List<ServiceInstance> instancesList = discoveryClient.getInstances("SPRINGCLOUD-PAYMENT-SERVICE");
//判断集合instancesList 是否为空 不为空方可继续执行
if(instancesList.isEmpty()){
return null;
}else {
ServiceInstance instance = loadBalancer.instance(instancesList);
URI uri = instance.getUri();
return restTemplate.getForObject(uri+"/payment/get/?id="+id,String.class);
}
}
4. Sprint cloud 集成openFeign
定义

功能

Feign和openFeign的区别

openFegin用法

pom.xml
<dependencies>
<!--添加common 通用包-->
<dependency>
<artifactId>springcloud-api-common</artifactId>
<groupId>com.tina.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--添加swagger2依赖的jar包-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<!--添加openFeign依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<!--eureka依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- boot web actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 一般通用配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
=========================================================
配置文件
server:
port: 8002
eureka:
client:
register-with-eureka: true #是否将自己注册到注册中心
fetch-registry: true #是否从服务端抓取已有的注册信息
service-url:
defaultZone: http://springcloud-eureka-server7001:7001/eureka,http://springcloud-eureka-server7002:7002/eureka
instance:
instance-id: springcloud-consumer-order
prefer-ip-address: true #访问路径可以显示IP地址
spring:
application:
name: springcloud-consumer-order
#设置openFeign客户端超时事件,适用于网络状况正常的情况下,两端连接所有的
# 配置feign的日志级别,以什么级别监视哪个接口
logging:
level:
com.tina.consumer.openfeign.service.PaymentFeignService: debug
=========================================================
配置类
@Configuration
public class OpenFeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
=========================================================
启动类
@SpringBootApplication
@EnableFeignClients //开启openFeign
@EnableSwagger2
public class FeignOrderApplication8002 {
public static void main(String[] args) {
SpringApplication.run(FeignOrderApplication8002.class,args);
}
}
=========================================================
service 接口
@Component
@FeignClient(value = "springcloud-payment-service") //指定调用哪个微服务 SPRINGCLOUD-PAYMENT-SERVICE
public interface PaymentFeignService {
//根据ID查询的方法
@GetMapping(value = "/payment/get")
public CommonResult getPaymentById(@RequestParam(value = "id") Long id);
@GetMapping(value = "/payment/getDelay")
public CommonResult getDelay();
}
=========================================================
控制类
@RestController
@Slf4j
@Api(value = "Payment模块")
@RequestMapping("/payment")
public class PaymentController {
@Resource
private PaymentService paymentService ;
@Value("${server.port}")
private String port ;
// 设置一个延时
@GetMapping(value = "/getDelay")
public CommonResult getDelay(){
try {
Thread.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
return new CommonResult(200," 操作成功",null);
}
//添加的方法
@PostMapping(value = "/create")
public CommonResult create(@RequestBody Payment payment){
int result = paymentService.create(payment);
log.info("插入的结果为:"+result);
if(result>0){
return new CommonResult(200,"插入数据成功"+port,null);
}else {
return new CommonResult(444,"插入数据失败"+port,null);
}
}
//根据ID查询的方法
@GetMapping(value = "/get")
public CommonResult getPaymentById(@RequestParam Long id){
Payment payment = paymentService.getPaymentById(id);
if(payment != null){
return new CommonResult(200,"查询数据成功"+port,payment);
}else {
return new CommonResult(444,"查询数据失败"+port,null);
}
}
}
=========================================================
备注
须在服务提供者的配置文件中开启ribbon负载均衡

openFegin日志


网友评论