ZuulFilter 执行顺序
说明: 创建了两个Filter,分别是
PreFilter
public class PreFilter extends ZuulFilter {public PreFilter() {super();}@Overridepublic String filterType() {return FilterConstants.PRE_TYPE;}@Overridepublic int filterOrder() {return 0;}@Overridepublic boolean shouldFilter() { // return true;//跨域设置RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();//只过滤OPTIONS 请求if(request.getMethod().equals(RequestMethod.OPTIONS.name())){return true;}return false;}@Overridepublic Object run() {RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();HttpServletResponse response = ctx.getResponse();response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));response.setHeader("Access-Control-Allow-Credentials","true");response.setHeader("Access-Control-Allow-Headers","authorization, content-type");response.setHeader("Access-Control-Allow-Methods","POST,GET");String requestUrl = request.getRequestURL().toString();String requestUri = request.getRequestURI();String zuul = requestUrl.substring(0,requestUrl.indexOf(requestUri)); // zuul根路径ctx.addZuulRequestHeader("zuul", zuul);//不再路由ctx.setSendZuulResponse(false);ctx.setResponseStatusCode(200);return null;}}
PostFilter
@Component public class PostFilter extends ZuulFilter {protected static final String SEND_ERROR_FILTER_RAN = "sendErrorFilter.ran";@Overridepublic String filterType() {return FilterConstants.POST_TYPE;}@Overridepublic int filterOrder() {return -1;}@Overridepublic boolean shouldFilter() {return true;}@Overridepublic Object run() {return null;} }
我测试了几种情况,发现结果如下
1 按照filterType决定顺序
Pre 优先 Post执行,此时filterOrder没有作用。
2 filterType相同
filterOrder有作用,数字越小,越先执行。(负数也是这个规则,0和-1的话,-1先执行)
3 相同filterType,相同filterOrder,都执行,执行顺序不清楚。
prefilter先执行了,post后执行了。
感觉不像是按照过滤请名称排序的样子。
转载于:https://www.cnblogs.com/hanjun0612/p/10782987.html
ZuulFilter 执行顺序相关推荐
- SpringCloud配置文件 application.yml和 bootstrap.yml区别,执行顺序
说在前面 SpringBoot默认支持properties和YAML两种格式的配置文件.前者格式简单,但是只支持键值对.如果需要表达列表,最好使用YAML格式.SpringBoot支持自动加载约定名称 ...
- spring 基于XML的申明式AspectJ通知的执行顺序
spring 基于XML的申明式AspectJ通知的执行顺序 关于各种通知的执行顺序,结论:与配置文件中的申明顺序有关 1. XML文件配置说明 图片来源:<Java EE企业级应用开发教程&g ...
- MySQL 学习笔记(17)— SQL 执行顺序
以查询语句为例,我们看下面的查询语句: (6)SELECT [DISTINCT | ALL] col1, col2, agg_func(col3) AS alias (1) FROM t1 JOIN ...
- ASP.NET 2.0中Page事件的执行顺序
Page 执行中将按照如下顺序激活事件: Page.PreInit Page.Init Page.InitComplite Page.PreLoad Page.Load Page.LoadComple ...
- 前端碎碎念 之 nextTick, setTimeout 以及 setImmediate 三者的执行顺序
『前端碎碎念』系列会记录我平时看书或者看文章遇到的问题,一般都是比较基础但是容易遗忘的知识点,你也可能会在面试中碰到. 我会查阅一些资料并可能加上自己的理解,来记录这些问题.更多文章请前往我的个人博客 ...
- java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
2019独角兽企业重金招聘Python工程师标准>>> /* * 几大原则 * 一.静态成员变量(Static) * 1.静态成员变量为类变量,所有对象共享同一内存空间 * 2.静态 ...
- 谈谈C#中类成员的执行顺序.
今天我们来谈谈C#中子类和父类中静态成员以及构造函数的执行顺序,这个地方向来是初学C#的人比较迷惑的地方,也是各大公司最喜欢拿来出面试题的地方. 下面我们分情况来分析. 1. 普通构造函数和静态构造函 ...
- java注解的执行顺序_深入理解Spring的@Order注解和Ordered接口
前言 Spring的@Order注解或者Ordered接口大家都知道是控制顺序的,那么它们到底是控制什么顺序的?是控制Bean的注入顺序,还是Bean的实例化顺序,还是Bean的执行顺序呢?那么我们先 ...
- Jmeter组件执行顺序与作用域
一.Jmeter重要组件: 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用.配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同 ...
最新文章
- python 正则表达式方法_Python正则表达式一: 基本使用方法
- windows 切换 默认 jdk 版本
- mybatis mysql 配置文件路径_从零搭建SpringBoot+MyBatis+MySQL工程
- JPM Coin三部曲 (上) :深入理解摩根幣的運作
- Error running app: Default Activity Not Found
- 数据仓库详细介绍(九.数据质量)流程与工具
- 使用Python将word转换为pdf
- 数字谐音记忆编码连连看网页应用
- UOM Convertion Rate API
- 高频电源模块FB230D10NZ-D浮充模块充电机
- php导出word文件(二)
- 3D仿真教程:ThingJS全套环境搭建方案
- gitlab漏洞导致服务器被植入挖矿程序
- EasyNVS摄像机公网全终端无插件网页摄像机直播管理服务运行出现“请求服务不存在或已停止”
- Java-List数组排序的使用—Collections.sort()
- Verilog实现1位全加器及输出逻辑解析
- 13 蜡烛图与移动平均线
- HTML5笔记+案例
- 我给自己的新年礼物—书籍——2014002
- python中的pip更新详细方法