【发布时间】:2017-12-15 15:05:13
【问题描述】:
ZuulFilter.run()返回值的可能用法是什么?
所有示例(例如Spring example)都返回null。
官方文档says:
可能会返回一些任意的工件。当前的实现忽略它。
那么为什么要拥有它呢?
【问题讨论】:
标签: java spring spring-boot netflix-zuul
ZuulFilter.run()返回值的可能用法是什么?
所有示例(例如Spring example)都返回null。
官方文档says:
可能会返回一些任意的工件。当前的实现忽略它。
那么为什么要拥有它呢?
【问题讨论】:
标签: java spring spring-boot netflix-zuul
我在多个项目中使用过这个库,但我从未想过要研究并偶然发现这个问题,所以我不得不去看看。只是在 IntelliJ 中跟踪代码,结果看起来确实毫无意义。
我在zuul-core:1.3.1:
查看FilterProcessor,当调用路由方法根据类型进行路由时,它们都调用runFilters(sType),最终得到实现IZuulFilter类的有问题的返回对象。这条路似乎到此为止了。
然后我停下来查看他们的测试类,似乎对返回对象和包装它的 ZuulFilterResult 没有任何作用。
然后我想,好吧,也许有一种方法可以将数据从一个 IZuulFilter 传递到另一个(例如从 pre 到 route),但这似乎也不可能,因为 FilterProcessor.processZuulFilter(ZuulFilter) 没有做任何事情结果并将其传递回runFilters(sType),我们知道它会忽略它。
我的下一个问题是,“好吧,也许您可以提供自己的FilterProcessor 实现并将其换掉并在某处实际使用该对象”。但是,唉,除非您想要/需要在ZuulServlet 中实现更多功能,否则情况似乎并非如此?
最后,我想,“好吧,也许这只是一个约定俗成的事情”。但是java.lang.Runnable.run() 是无效的,javax.servlet.Filter.doFilter 也是无效的。
所以现在,我最好的猜测是,就像我们所有人在职业生涯的某个阶段一样,我们有时会陷入YAGNI 的境地;也许这只是一个例子。
【讨论】: