Как отключить проверку класса @Configuration в Spring boot - PullRequest
1 голос
/ 14 января 2020

У меня есть два приложения Spring Boot, которые зависят от одного и того же модуля common. В модуле common у меня есть две конфигурации classes для двух разных БД. В первом приложении мне нужно иметь соединение на 2 БД, но во втором приложении нет необходимости иметь соединение на 2 БД, и я хочу иметь соединение только на первую БД.

My Второе приложение по умолчанию сканирует весь модуль common и Configuration на двоих DB. Я хочу отключить сканирование на втором Configuration. Как я могу это сделать?

Это мое второе приложение:

    @SpringBootApplication(scanBasePackages = { "com" })
    @EnableScheduling
    public class secondApplication {
        public static void main(String[] args) {
            SpringApplication.run(secondApplication.class, args);
        }
    }

Первая конфигурация:

    @Configuration
    @EnableTransactionManagement
    @EnableJpaRepositories(
            entityManagerFactoryRef = "postgresqlEntityManagers", 
            transactionManagerRef = "postgresqlTransactionManager", 
            basePackages = "com.db1")
    public class firstConfiguration {

Вторая конфигурация:

        @Configuration
        @EnableTransactionManagement
        @EnableJpaRepositories(
                entityManagerFactoryRef = "postgresqlEntityManagers", 
                transactionManagerRef = "postgresqlTransactionManager", 
                basePackages = "com.db2")
        public class secondConfiguration {

1 Ответ

1 голос
/ 14 января 2020

На основе вашего кода вы добавляете @ComponnentScan и используете excludeFilters, чтобы исключить любые классы, которые вы хотите, а также исключить их из источников данных автоконфигурации, используя это @EnableAutoConfiguration, которое имеет поле исключения. следуя этим конфигурациям, вы должны иметь следующий пример:

@ComponentScan(basePackages = "com.example.project",
         excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,
                classes = {AnyCustomConnectionProvider.class, AnyCustomJpaConfiguration.class}))
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,
                                    DataSourceTransactionManagerAutoConfiguration.class,
                                    HibernateJpaAutoConfiguration.class})
...