我正在处理的应用程序对包含十二个@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子项目共享它?
我可以把它拆分成自己的maven项目,只将它作为需要它的子项目中的依赖项。但是还有其他11种类似的配置bean!虽然我喜欢这种方法,但它可能被视为矫枉过正 - 但我有5个同事要说服。
我可以努力使用@ImportAutoConfiguration
代码和@DataJpaTest
进行测试 - 但后来我错过了@JsonTest
或{{1}等Spring Boot优势测试切片
我可以在需要它们的每个项目中重复配置bean - 稍微剪切一下粘贴 - 但我最喜欢这个选项。
是否有4?