在项目之间共享公共Spring Boot配置

时间:2016-11-24 17:15:50

标签: java spring-boot configuration java-8 spring-test

我正在处理的应用程序对包含十二个@Configuration spring-boot bean的公共模块有一个maven依赖项,这些bean指定数据源,LDAP上下文,安全模块,属性源等我经常要压缩的

我的应用和此常用模块是maven @Import多模块项目的一部分。我的子项目需要12个配置bean中的6个。

我使用@SpringBootApplication#exclude@ImportAutoConfiguration以及@Import({PropertySpringConfig.class, LdapConfig.class, SecurityConfig.class, JpaDataConfiguration.class, RestConfiguration.class, WebConfigurer.class}) @SpringBootApplication(exclude = { RefDataSourceConfig.class, ElasticsearchAutoConfiguration.class, CamelAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class}) public class MyRestApplication { public static void main(String[] args) { SpringApplication.run(MyRestApplication.class, args); } } 已经走了很长的路:

@Configuration
@OverrideAutoConfiguration(enabled = false)
@ImportAutoConfiguration(value = {
        CacheAutoConfiguration.class,
        JpaRepositoriesAutoConfiguration.class,
        DataSourceAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class,
        TransactionAutoConfiguration.class,
        TestDatabaseAutoConfiguration.class,
        TestEntityManagerAutoConfiguration.class })
public class TestJpaConfiguration {}

以及我所有JPA测试导入的测试配置bean(我有其他人,例如用于REST测试):

@Primary

整个代码库是使用Spring 1.3.x设置的。我将其升级到Spring 1.4.x.

例如,其中一个数据源,共享依赖项中的配置bean - 我不需要它,它会阻止Spring Boot自动配置,因为它标有@SpringBootApplication#excludes(可能不必要)。

我不希望子项目中的Spring Boot在运行自动配置时看到它,但是如何从公共模块与其他需要它的Spring Boot子项目共享它?

  1. 我可以把它拆分成自己的maven项目,只将它作为需要它的子项目中的依赖项。但是还有其他11种类似的配置bean!虽然我喜欢这种方法,但它可能被视为矫枉过正 - 但我有5个同事要说服。

  2. 我可以努力使用@ImportAutoConfiguration代码和@DataJpaTest进行测试 - 但后来我错过了@JsonTest或{{1}等Spring Boot优势测试切片

  3. 我可以在需要它们的每个项目中重复配置bean - 稍微剪切一下粘贴 - 但我最喜欢这个选项。

  4. 是否有4?

0 个答案:

没有答案