Spring Boot:如何重用@EnableAutoConfiguration?

时间:2017-05-30 11:54:15

标签: java spring spring-boot

目前我正在指定我的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 {
    ...
}

我已经在某个地方读过这个不可行的地方,因为每个应用程序应该只有一个@EnableAutoConfiguration注释,因为Spring Boot只会考虑首先找到的注释。在这种情况下是Application类中的那个。

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

1 个答案:

答案 0 :(得分:0)

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

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

并使用它