迭代所有 ServletRegistrationBean 并添加它们的映射(如果它们的 Servlet 是 DispatcherServlet)。确保通过 ServletRegistrationBean 注册并公开为 Bean 的 servlet 不会被描述两次。
修复 gh-13186
我针对 2.0.x 分支执行此操作,因为我认为它可以包含在维护版本中。如果您认为不能,那将是不幸的(因为我们需要等待 2.1?),但我可以修改 PR 以针对 master 分支
迭代所有 ServletRegistrationBean 并添加它们的映射(如果它们的 Servlet 是 DispatcherServlet)。确保通过 ServletRegistrationBean 注册并公开为 Bean 的 servlet 不会被描述两次。
修复 gh-13186
我针对 2.0.x 分支执行此操作,因为我认为它可以包含在维护版本中。如果您认为不能,那将是不幸的(因为我们需要等待 2.1?),但我可以修改 PR 以针对 master 分支
@filiphr #13186 在待办事项中分配(即 2.1)。
我认为原因更多在于您计划如何实现内容,并且您可能会考虑接受在早期版本中实现的 PR。
2.0.x 不被接受有什么具体原因吗?这个 PR 有什么问题吗?
问题是,目前在 2.0.2 中,即使我将 公开DispatcherServlet
为Bean
Boot,也只会在 Bean 名称DispatcherServlet
与 Servlet 名称相同时正确初始化映射。ServletRegistrationBean
请查看待办事项里程碑的描述。还有一个2.0.x
里程碑。
我看到了,一个人只能希望?我已将 PR 的基础从 更改2.0.x
为master
.
如果你能重新考虑一下我真的会很感激吗?
使用通用名称可能比getServlet()
公开更值得。
标记为团队关注,看看我们是否对 2.0 感到满意。我想我会同意的。
@filiphr在 Gitter 上提出了很好的观点:
名字错了。我在 ServletRegistrationBean 中有一个 servlet 的自定义名称,但 servlet 的名称与该名称不匹配。它找不到孩子。问题就在这里。 Tomcat中搜索时使用bean名称
因此,如果您使用自定义 servlet 名称,即使您将Servlet
和 theServletRegistrationBean
作为 beans 公开,我们也将无法找到它,因为我们使用的是 bean 名称而不是 servlet 名称。我认为这应该被视为一个错误。修复它需要我们按照此处的建议查找 servlet 注册 bean。简而言之,我对 2.0.x 也很满意。
感谢您将其定位到 2.0.x。我应该将 PR 的目标分支更改回 2.0.x 吗?
顺便说一句@philwebb 你说:
使用泛型可能比公开 getServlet() 更值得。
哪个通用?位于父ServletRegistrationBean#servlet
类中ServletRegistrationBean
而不是位于父类中。我找不到其他方法来解决这个问题。也许我错过了什么?
感谢您将其定位到 2.0.x。我应该将 PR 的目标分支更改回 2.0.x 吗?
不需要,我们只需挑选提交
使用泛型可能比公开 getServlet() 更值得。
我想也许可以<T>
从看看ServletRegistrationBean<T>
。事后看来,我不确定这比getServlet()
公开更好。现在不用费心去改变它,我们会看看团队其他成员认为最好的。
我在想也许可以
<T>
从ServletRegistrationBean<T>
如果您正在考虑反射并仅获取类型,那么这还不够,因为我们需要实际的 servlet(因此触发器可能会发生)。
只是为了提供信息,我在查看后更改了它AbstractFilterRegistrationBean#getFilter()
,它是public
。
无论如何,如果我这边有什么需要改变的地方,请告诉我,我对任何修改都没有问题,对我来说它的功能很重要?
你们可能在其他问题和下一个功能版本上还有很多工作要做。
只是想问一下这个的状态如何?我还可以做些什么以便我们可以在 2.0.4 的下一个补丁中获得它吗?还是有其他东西阻碍了这一点?
@filiphr 没有什么可以阻止这一点。我们通常会在发布之前进行 PR 扫描,因此除非出现不可预见的情况,否则我们应该能够将其纳入 2.0.4。
感谢 PR @filiphr,我用稍微不同的方法解决了这个问题,请参阅 3423c5d 了解更多详细信息。
感谢您修复此问题@snicoll。我有点难过它的 PR 没有被合并,但我学到了一些新东西,这总是好的。
期待2.0.4
如果您有机会测试快照,我们将不胜感激。
@snicoll我刚刚尝试了一下,效果很好(正如预期的那样)。感谢您进行此改进。它甚至在 IntelliJ 端点映射中也能很好地工作。
只有一件小事,那就是 Actuator 端点被映射到每个 servlet 中。但是,这与此问题无关,我认为您对此不感兴趣(这对我来说很好)