spring-security 为什么要同时使用@Configuration和@EnableWebSecurity进行注解

vngu2lb8  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(215)

我正在阅读Spring in Action第5版。在第4部分(保护Spring)中,他想覆盖由Sping Boot 自动配置的安全性...所以他创建了一个名为SecurityConfig的配置类,如下所示:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}

同样,在Javadoc of @EnableWebSecurity中,它们也执行相同的操作
他们还说:
将此注解添加到@Configuration类中,以便在任何WebSecurityConfigurer中定义Spring Security配置,或者更有可能通过扩展WebSecurityConfigurerAdapter基类并覆盖各个方法来定义
但@EnableWebSecurity已是 @Configuration 。以下是确认此操作的代码:

@Retention(RUNTIME)
@Target(TYPE)
@Documented
@Import({WebSecurityConfiguration.class,org.springframework.security.config.annotation.web.configuration.SpringWebMvcImportSelector.class,org.springframework.security.config.annotation.web.configuration.OAuth2ImportSelector.class,org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.class})
@EnableGlobalAuthentication
@Configuration
public @interface EnableWebSecurity

我的问题是为什么我们应该用@Configuration和@EnableWebSecurity而不是只用@EnableWebSecurity来注解一个类?
谢谢你,谢谢!

nnt7mjpx

nnt7mjpx1#

自从这次提交之后,就不需要用@Configuration来注解@EnableWebSecurity类了。
正如GitHub issue所说,
这样,在使用@Enable* 注解时,就不需要声明@Configuration。
所以,看起来开发人员已经删除了同时使用@Configuration@EnableWebSecurity的要求,但是忘记了在JavaDoc中反映这一点。

相关问题