Java Spring Boot:@EnableAutoConfiguration如何重用?

Java Spring Boot:@EnableAutoConfiguration如何重用?,java,spring,spring-boot,Java,Spring,Spring Boot,目前,我通过以下方式指定我的Spring Boot自动配置: @EnableAutoConfiguration(exclude = { ... }) @ComponentScan("my.company") class Application { static void main(String[] args) { ... } } 由于Spring Boot将在公司范围内使用,我们希望提供一些默认配置类,如MyCompanyDefaultConfiguration

目前,我通过以下方式指定我的Spring Boot自动配置:

@EnableAutoConfiguration(exclude = { ... })
@ComponentScan("my.company")
class Application {
    static void main(String[] args) {
        ...
    }
}
由于Spring Boot将在公司范围内使用,我们希望提供一些默认配置类,如
MyCompanyDefaultConfiguration
,其中包含一些自动配置排除项,并且仅在需要时为每个应用程序指定添加排除项

大概是这样的:

@Import(MyCompanyDefaultConfiguration.class)
@EnableAutoConfiguration(exclude = { /* application specific excludes */ })
class Application {
    static void main(String[] args) {
        ...
    }
}

@EnableAutoConfiguration(exclude = { /* company-wide excludes */ })
@ComponentScan("my.company")
class MyCompanyDefaultConfiguration {
    ...
}

我曾在某个地方读到这不起作用,因为每个应用程序应该只有一个代码> @ eababyAutoDebug 注释,因为Spring Bug只考虑第一个找到的那个。在本例中,是应用程序类上的一个


考虑到这一限制,以可重用的方式组织此配置的解决方案是什么?

制作带注释的注释,如
@EnableAutoConfiguration
本身就是带注释的注释

@EnableAutoConfiguration(exclude = { /* application specific excludes */ })
public @interface MyCompanyEnableAutoConfiguration {
}

然后使用它

做一个带注释的注释,比如
@EnableAutoConfiguration
本身就是一个带注释的注释

@EnableAutoConfiguration(exclude = { /* application specific excludes */ })
public @interface MyCompanyEnableAutoConfiguration {
}
并使用它