JeB*_*JeB 9 java spring spring-boot netflix-zuul
ZuulFilter.run()返回值的可能用途是什么?
所有示例(例如Spring 示例)都返回null.
官方文档说:
可能会返回一些任意的工件。当前的实现忽略了它。
那么为什么要拥有它呢?
我在多个项目中使用过这个库,但我从未想过要研究并偶然发现这个问题,所以我必须看看。仅仅在 IntelliJ 中跟踪代码,看起来结果确实毫无意义。
我上线了zuul-core:1.3.1:
看一下FilterProcessor,当调用路由方法根据类型进行路由时,它们都会调用runFilters(sType),最终得到实现类的返回对象IZuulFilter。这条路似乎就到此为止了。
然后我停下来查看他们的测试类,似乎对返回对象和ZuulFilterResult包装它的对象都没有做任何事情。
然后我想,好吧,也许有一种方法可以将数据从一个传递IZuulFilter到另一个(例如从预传递到路由),但这似乎也不可能,因为FilterProcessor.processZuulFilter(ZuulFilter)不对结果做任何事情,只是将其传递回runFilters(sType)哪个我们知道忽略它。
我的下一个问题是,“好吧,也许您可以提供自己的FilterProcessor实现并将其交换出来,并在某个地方实际使用该对象”。但可惜的是,情况似乎并非如此,除非您想要/需要在ZuulServlet?中实现更多功能。
最后,我想,“好吧,也许这只是一个惯例”。却java.lang.Runnable.run()是虚空,javax.servlet.Filter.doFilter亦是虚空。
所以现在,我最好的猜测是,就像我们所有人在职业生涯的某个阶段一样,我们有时会陷入YAGNI 的情况;也许这只是一个例子。
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |