为什么@Configuration注释从Spring Security 6中的@EnableWebSecurity类中删除

Isu*_*era 0 java spring spring-security spring-boot

我最近将我的 Spring Boot 应用程序Spring Security 5Spring Security 6. 通常,我们@EnableWebSecurity在配置类中使用注解来启用Web安全。我在 Spring Security 6 中注意到的一件有趣的事情是他们从 @EnableWebSecurity 类中删除了 @Configuration 注释。

为了便于参考,我添加了Spring Security 5Spring 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 中被删除了。

M. *_*num 5

因为没有@Enable*包含其他注释@Configuration。这个是个奇怪的人。所以现在它再次与所有其他注释对齐@Enable*,您自己需要添加@Configuration来标记配置类。

请参阅与删除相关的其他问题,其中包含原因。此 PR包含更改。