从BeanDefinitionParser注册Spring过滤器

时间:2014-11-05 14:11:02

标签: spring spring-mvc

我正在创建一个用于Spring XML配置的自定义命名空间。我已经实施了NamespaceHandlerBeanDefinitionParser。所以,现在我可以将<myns:some-awesome-feature />放入我的Spring配置中,它会自动创建所需的bean。

除了创建一些普通的Spring bean之外,我还想让这个注释注册一个OncePerRequestFilter,以便从我的代码能够使用的请求中提取一些信息。有没有办法使用我在实现自定义XML标记时可用的两个类以编程方式注册过滤器?

1 个答案:

答案 0 :(得分:1)

不分别触摸web.xmlWebApplicationInitializer是不可能的。 但是,您可以创建一个可扩展的解决方案,以便将来进行修改而不会有麻烦。

Spring Security&#39; <http pattern='...' security="..."/>会自动为您创建并注册一系列链式过滤器bean。你所要做的就是去 在您web.xml注册DelegatingFilterProxy并参考springSecurityFilterChain

您可以创建一个类似的解决方案,例如<myns:awesome-http pattern='...' />实例化OncePerRequestFilter。在web.xml中,您宣布DelegatingFilterProxy引用了您的awesomeFilterChain。在将来的版本中,您可以在不触及配置的情况下为链添加更多过滤器。

我从未实现过这样的功能,但我非常有信心这是可能的。

作为起点,请查看HttpConfigurationBuilderHttpSecurityBeanDefinitionParser的来源,了解Spring Security如何实施<http .../>

相关问题