Java 在没有AbstractSecurityWebApplicationInitializer的情况下启用Spring安全性

Java 在没有AbstractSecurityWebApplicationInitializer的情况下启用Spring安全性,java,spring,spring-security,Java,Spring,Spring Security,我有一个基于Spring的web应用程序(不是Spring boot),我正在尝试启用Spring安全性 我可以通过扩展AbstractSecurityWebApplicationInitializer来启用它,它工作得很好。但是,我想使用@EnableWebSecurity来实现它,而不扩展AbstractSecurityWebApplicationInitializer。但仅此注释无法启用它。有没有办法做到这一点,或者这个注释解决方案只适用于SpringBoot 谢谢。在非引导环境中,您可能

我有一个基于Spring的web应用程序(不是Spring boot),我正在尝试启用Spring安全性

我可以通过扩展
AbstractSecurityWebApplicationInitializer
来启用它,它工作得很好。但是,我想使用
@EnableWebSecurity
来实现它,而不扩展
AbstractSecurityWebApplicationInitializer
。但仅此注释无法启用它。有没有办法做到这一点,或者这个注释解决方案只适用于SpringBoot


谢谢。

在非引导环境中,您可能正在使用dispatcher servlet初始值设定项类,例如,扩展
AbstractAnnotationConfigDispatchers ServletInitializer
。您可以按如下方式注册安全筛选器链:

私有静态void initSecurityFilter(ServletContext ServletContext){
FilterRegistration.Dynamic securityFilter=servletContext.addFilter(“springSecurityFilterChain”,
DelegatingFilterProxy.class);
final EnumSet=EnumSet.of(DispatcherType.REQUEST,DispatcherType.FORWARD);
addMappingForUrlPatterns(es,true,“/*”);
}

并从启动时调用它

怎么样?我在任何情况下都会配置它。但是,如果不扩展AbstractSecurityWebApplicationInitializer,Spring安全过滤器链将不会注册,并且此配置根本不会生效。至少我找不到办法。谢谢你的回复。我可以通过将配置类传递给AbstractSecurityWebApplicationInitializer的构造函数来注册它。我想了解/做的是,是否有一种方法可以像在Spring Boot中一样使用@EnableWebSecurity来实现这一点。我不是Spring Boot方面的专家,但我认为你做不到。Boot可以完全控制DispatcherServlet初始化以及一系列实现此功能的默认值。在plainspring中,您必须告诉容器要使用哪些过滤器以及要应用哪些配置类。