我正在创建一个用于Spring XML配置的自定义命名空间。我已经实施了NamespaceHandler
和BeanDefinitionParser
。所以,现在我可以将<myns:some-awesome-feature />
放入我的Spring配置中,它会自动创建所需的bean。
除了创建一些普通的Spring bean之外,我还想让这个注释注册一个OncePerRequestFilter
,以便从我的代码能够使用的请求中提取一些信息。有没有办法使用我在实现自定义XML标记时可用的两个类以编程方式注册过滤器?
答案 0 :(得分:1)
不分别触摸web.xml
或WebApplicationInitializer
是不可能的。
但是,您可以创建一个可扩展的解决方案,以便将来进行修改而不会有麻烦。
Spring Security&#39; <http pattern='...' security="..."/>
会自动为您创建并注册一系列链式过滤器bean。你所要做的就是去
在您web.xml
注册DelegatingFilterProxy
并参考springSecurityFilterChain
。
您可以创建一个类似的解决方案,例如<myns:awesome-http pattern='...' />
实例化OncePerRequestFilter
。在web.xml
中,您宣布DelegatingFilterProxy
引用了您的awesomeFilterChain
。在将来的版本中,您可以在不触及配置的情况下为链添加更多过滤器。
我从未实现过这样的功能,但我非常有信心这是可能的。
作为起点,请查看HttpConfigurationBuilder
和HttpSecurityBeanDefinitionParser
的来源,了解Spring Security如何实施<http .../>
。