spring-cloud 使用初谈(三)--注解
2021-01-22 本文已影响0人
程序员ken
@EnableDiscoveryClient
在应用主类中,通过@EnableDiscoveryClient注解来添加发现服务能力。
@LoadBalanced
创建RestTemplate实例,并通过@LoadBalanced注解开启均衡负载能力。
@EnableFeignClients
开启Feign功能
![](https://img.haomeiwen.com/i12816177/19f3480091010416.png)
@RibbonLoadBalancerClientribbon
实现负载均衡, 在SpringCloud的客户端负载均衡器LoadBalancerClient的默认实现RibbonLoadBalancerClient中,使用了Ribbon的ILoadBalancer接口来实现chooseServer即负载均衡功能。
@FeignClient
![](https://img.haomeiwen.com/i12816177/e65f38ba7704e7fd.png)
![](https://img.haomeiwen.com/i12816177/cfcf020ca8d20e01.png)
@EnableCircuitBreaker
在SpringCloud中使用断路器,需要加上这个
@HystrixCommand
实现断路器的功能,比如访问当前url的如果请求错误 会调用error的方法
![](https://img.haomeiwen.com/i12816177/c79f405190ae2689.png)
@HystrixCollapser
此注解目的是为了合并多个请求 ,将其变为一个请求
![](https://img.haomeiwen.com/i12816177/19ea061e82e0b0de.png)
@EnableZuulProxy
@EnableZuulProxy简单理解为@EnableZuulServer的增强版,当Zuul与Eureka、Ribbon等组件配合使用时,我们使用@EnableZuulProxy。
![](https://img.haomeiwen.com/i12816177/6e82fa51cdb49601.png)
pre类型过滤器
(1) ServletDetectionFilter:该过滤器用于检查请求是否通过Spring Dispatcher。检查后,通过isDispatcherServletRequest设置布尔值。
(2) FormBodyWrapperFilter:解析表单数据,并为请求重新编码。
(3) DebugFilter:顾名思义,调试用的过滤器,可以通过zuul.debug.request=true,或在请求时,加上debug=true的参数,例如$ZUUL_HOST:ZUUL_PORT/path?debug=true开启该过滤器。这样,该过滤器就会把RequestContext.setDebugRouting()、RequestContext.setDebugRequest()设为true。
route类型过滤器
SendForwardFilter:该过滤器使用Servlet RequestDispatcher转发请求,转发位置存储在RequestContext.getCurrentContext().get("forward.to")中。可以将路由设置成:
1. zuul:
2. routes:
3. abc:
4. path: /abc/**
5. url: forward:/abc
然后访问$ZUUL_HOST:ZUUL_PORT/abc,观察该过滤器的执行过程。
post类型过滤器
SendResponseFilter:将Zuul所代理的微服务的响应写入当前响应。
error类型过滤器
SendErrorFilter:如果RequestContext.getThrowable()不为null,那么默认就会转发到/error,也可以设置error.path属性修改默认的转发路径。
@SpringCloudApplication注解
@SpringCloudApplication
包括:@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker,分别是SpringBoot注解、注册服务中心Eureka注解、断路器注解。对于SpringCloud来说,这是每一微服务必须应有的三个注解,所以才推出了@SpringCloudApplication这一注解集合。
本文来源于:程序员ken,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina)、掘金,转载请注明出处。