繁体   English   中英

具有@EnableAutoConfiguration批注的多个文件

[英]Multiple files having @EnableAutoConfiguration annotation

我看到了一个Spring Boot项目,该文件在文件中定义了@EnableAutoConfiguration,该main方法类似于我所看到的所有Spring Boot项目。 但是,我看到此批注在同一项目中的其他Java文件(包含Swagger配置的文件)中定义。 是否应在多个文件中定义此注释? 这样做会不会有不利影响?

@EnableAutoComfiguration应该只出现一次。

以最简单的形式,如果多次声明它不会造成任何伤害,但是没有好处。 但是,如果您配置任何排除项,则由于每次注释都不累积,因此必须在每次出现注释时对其进行配置。

即使允许使用多个@EnableAutoConfiguration我也建议如果可能的话,只使用一个@EnableAutoConfiguration 只是因为能够排除您不需要的任何配置。 否则可能会发生以下问题:

  1. 这是Spring Boot应用程序的主要配置:

     @SpringBootApplication @Import(value = {WebSecurityConfiguration.class}) public class Application { public static void main(String... args) { SpringApplication.run(Application.class, args); } } 
  2. 这是WebSecurityConfiguration类的内容

     @Configuration public class WebSecurityConfiguration { @Configuration @EnableAutoConfiguration(exclude ={SecurityAutoConfiguration.class, SpringBootWebSecurityConfiguration.class}) @Profile("dev") protected static class DefaultWebSecurityConfig { } @Configuration @EnableAutoConfiguration @EnableWebSecurity protected static class LocalWebSecurityConfig extends WebSecurityConfigurerAdapter { //implementation } } 

因此,我希望对dev配置文件禁用安全性自动配置。 但是,由于@SpringBootApplication定义了@EnableAutoConfiguration ,因此在“主要” @EnableAutoConfiguration中扫描了适当的配置,并应用了默认安全设置。 结果启用了dev资料安全性。

如果我为Application类定义了@EnableAutoConfiguration且仅排除一次,则不会发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM