我最近将我的 Spring Boot 应用程序Spring Security 5从Spring Security 6. 通常,我们@EnableWebSecurity在配置类中使用注解来启用Web安全。我在 Spring Security 6 中注意到的一件有趣的事情是他们从 @EnableWebSecurity 类中删除了 @Configuration 注释。
为了便于参考,我添加了Spring Security 5和Spring Security 6中的 @EnableWebSecurity 的源代码。
// Spring Security 5
@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
// Spring Security 6
@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
public @interface EnableWebSecurity
Run Code Online (Sandbox Code Playgroud)
我很好奇的是,在 Spring Security 6 中删除 @Configuration 注解的原因是什么?
编辑:我在 GitHub 上看到这个问题,提到 @Enable* 注释不再需要 @Configuration 注释。但无论如何,它在 Spring Security 6 中被删除了。