您现在的位置是:主页 > 数据库技术 > 数据库技术
Spring Cloud中如何实现Zuul过滤器
IDCBT2021-12-24【服务器技术】人已围观
简介这篇文章将为大家详细讲解有关Spring Cloud中如何实现Zuul过滤器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 Zuul过滤器过滤器优先级 Spr
这篇文章将为大家详细讲解有关Spring Cloud中如何实现Zuul过滤器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Zuul过滤器过滤器优先级Spring Cloud为HTTP请求的各个阶段,提供了多个过滤器,这些过滤器的执行顺序,由它们各自提供的一个int值决定,提供的值越小,优先级越高。图7-6展示了默认的过滤器,以及它们的优先级。
图7-6 Spring Cloud自带的过滤器及优先级
如图7-6,在routing阶段,会优先执行Ribbon路由的过滤器,再执行简单路由过滤器。
自定义过滤器了解过滤器的执行顺序后,我们编写一个自定义过滤器。新建过滤类,继承ZuulFilter,实现请见代码清单7-10。
代码清单7-10:
codes\07\03\zuul-gateway\src\main\java\org\crazyit\cloud\filter\MyFilter.java
public class MyFilter extends ZuulFilter { // 过滤器执行条件 public boolean shouldFilter() { return true; } // 执行方法 public Object run() { System.out.println("执行 MyFilter 过滤器"); return null; } // 表示将在路由阶段执行 public String filterType() { return FilterConstants.ROUTE_TYPE; } // 返回1,路由阶段,该过滤将会最先执行 public int filterOrder() { return 1; } }
新建的自定义过滤器,将会在“routing”阶段执行,优先级为1,也就是在routing阶段,该过滤器最先执行。另外注意shouldFilter方法,过滤最终是否执行,由该方法决定,本例返回true,表示访问任何的路由规则,都会执行该过滤器。为了让Spring容器知道过滤器的存在,需要对该类进行配置,代码清单7-11为配置类。
代码清单7-11:
codes\07\03\zuul-gateway\src\main\java\org\crazyit\cloud\filter\FilterConfig.java
@Configuration public class FilterConfig { @Bean public MyFilter myFilter() { return new MyFilter(); } }标签:很赞哦! ()