抽象过滤器类

来源:4-6 定义抽象过滤器类

kynnnn

2020-05-07

请问老师 在定义抽象过滤器类时,在 shouldFilter 方法中已经获取到了RequestContext,为什么在run方法中还要再初始化一遍?不是shouldFilter为true才会走run方法么,所以shouldFilter时应该已经完成了初始化吧?

您的 shouldFilter 方法是这样的,我能不能直接给成员变量赋值,run方法中去掉初始化?

    @Override
    public boolean shouldFilter() {
        //获取当前线程的 RequestContext
        RequestContext currentContext = RequestContext.getCurrentContext();
        //SpringCloud内置的过滤器并不包含 NEXT,所以不包含默认为true
        return (boolean) currentContext.getOrDefault(NEXT, true);
    }

也就是我想改成下面这样的写法

RequestContext context;

@Override
public boolean shouldFilter() {
    //获取当前线程的 RequestContext
    context = RequestContext.getCurrentContext();
    //SpringCloud内置的过滤器并不包含 NEXT,所以不包含默认为true
    return (boolean) currentContext.getOrDefault(NEXT, true);
}

@Override
public Object run() throws ZuulException {
	return cRun();
}
写回答

1回答

张勤一

2020-05-07

同学你好:

    RequestContext 就是请求上下文,里面包含了请求的各种信息,我没有做过初始化的工作。代码有各种修改方式,能运行正确,符合预期就是可以的,不需要和我的一致。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

1
0

Spring Cloud微服务实战 打造企业级优惠券系统

微服务,SpringCloud,SpringBoot面试、毕设、

1210 学习 · 488 问题

查看课程