Springcloud高级-假装声明性服务调用-伟德国际韦德1946_

每天共享java 干货,欢迎重视,你的成功源于一斤等于多少两点点滴滴!

Feign是一个声明式的Web服务客户端。它使得Web服务客户端的写入愈加便利。具顾又铭有可插拔注解支撑,包含Feign注解和JAX-RS注解。

Spring Cloud增加了对Spring MVC注释的支撑,而且运用了在Spring Web中默许运用的相同的HttpMessageConverter。Spring Cloud集成

了Ribb丸子汤on和玮Eureka,在运用Feign时供给了负载均衡的http客户端。

服务供给方便是个简略的EurekaClient+web运用(spring.application.name : service-provider)。操控层如下:

@RestController
public class IndexController {
@Autowired
private IUserService userService;
@GetMapping("/find/{id}")
public User findById(@PathVariable Long id) {
return usSpringcloud高档-伪装声明性服务调用-伟德世界韦德1946_erServ个税申报ice.findById(id);
}Springcloud高档-伪装声明性服务调用-伟德世界韦德1946_
@PostMapping("/findUser")
public User findOne(@RequestBody User user) {
return user;
}
}

服务调用方项目

pom依靠:

   

org.springframework.cloud
spring-cloud抬头纹怎样去除-starter-eureka



org.sprinSpringcloud高档-伪装声明性服务调用-伟德世界韦德1946_gframework.cloud
sp尼玛拉姆ring-cloud-starter-feign

这儿只依靠了Feign,Springcloud高档-伪装声明性服务调用-伟德世界韦德1946_没有依靠Hystrix和Ribbon

application.yml文件装备:

server:
port: 18082

spring:
application:
name: service-consumer #运用程序称号

eureka:
client:
serviceUrl:
defaultZone: http://admin:admin@localhost:8761/eureka
instance:
prefer-ip-address:啊好紧 true #当猜想主机名时,服务器的IP地址应该在操Springcloud高档-伪装声明性服务调用-伟德世界韦德1946_作体系陈述的主机名中运用
instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}} #更改Eureka实例ID

进口发动程序,加上@EnableFeignClients注解敞开Feign:

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients // 敞开feign
publi爱情公寓名字暗藏玄机c class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
Springcloud高档-伪装声明性服务调用-伟德世界韦德1946_}
}

中心客峰峰信息港户端代码:

/*aimer*
* 运用feign
*/
@FeignClient(name = "service-provider", fallback = UserFallback.class)
public interface UserFeignC史上最强lient {
/**
* get恳求
*/
@GetMapping("/find/{id}")
UserEntity findById(@PathVariable("id") Long id); // PathVariable注解必须得设置value
/**
* post恳求
*/
@PostMapping("/findUser")
UserEntity findUser(@RequestBody UserEntity user)Springcloud高档-伪装声明性服务调用-伟德世界韦德1946_;
}

@FeignClient注解界说了该接口的一个Feign客户端,name指定了注册到Eureka的服务名,fa戚风蛋糕的做法llback是服务降级后背上长痘痘的原因的接口完成类(可参阅springcloud-feign的hystrix支撑)

@GetMapping指定了恳求的相对url和http恳求方法,与服务端一一对应。恳求参数和回来类型也得和服务端对应

遇到的坑: 1、运用@PathVariable时,必定得设置value(这点和spring MVC不一样,算是springcloud的一个坑)

2、有些SpringCloud版别,这儿只支撑@RequestMapping,不支撑GetMapping和PostMapping

操控层代码:

@RestController
public class FeignController {
@Autowired
private UserFeignClie拉尔萨nt feignClient;
@GetMappi总裁的3嫁娇妻ng("/find/{id}")
public UserEntity getO孕妈妈照ne(@PathVariable Long id) {
UserEntity user = feignClient.findById(id);
return user;
}

@GetMapping("/getUser卢伟英")
public UserEntity findUser() {
UserEntity user = new UserEntity();
user.setId("100");
user.setAge(10);
user.setLastName("p老公打针zx");
return feignClient.findUser(user);
}
}

评论(0)