SpringBoot excludeFilter не работает с несколькими классами конфигурации - PullRequest
0 голосов
/ 29 августа 2018

Я занимаюсь разработкой приложения для Springboot, которое зависит от другого приложения для Springboot. Я хочу включить большинство компонентов в родительское приложение Springboot, кроме одного.

Как можно исключить один bean-компонент Springboot, который родительский пакет сканировал, не затрагивая класс ParentApplication?

Способы, которые я пробовал, но не работает:

1: использование фильтрации исключений в моем классе приложения для фильтрации конкретного класса бинов.

2: Я также пытался исключить и класс компонента, и класс родительской конфигурации.

3: добавить интерфейс DisposableBean к классу бина, который я хочу исключить, и уничтожить его во время выполнения.

ниже указаны класс конфигурации моего приложения и родительский класс.

myApplication.class: пакет com.myapp;

@ComponentScan(
    basePackages = {"com.parent",{my own packages..}},
    excludeFilters= {
    @ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value= {TheClassToExclude.class}),
    @ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value= {ParentApplication.class})}   
)
@SpringBootApplication(exclude=ParentApplication.class)
public class MyApplication{

public static void main(String[] args) {
    SpringApplication.run(MyApplication.class, args);
}

@PostConstruct
public void init() {
    System.out.println("App is initialized.");
}

}

my ParentApplication.class

    package com.parent;


    @EnableRetry
    @EnableScheduling
    @SpringBootApplication(exclude = { HibernateJpaAutoConfiguration.class })
    @ComponentScan(basePackages = {all the base package including the TheClassToExclude}
    @PropertySource({all resources})
    public class ParentApplication {

    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    @PostConstruct
    public void haha() {
        System.out.println("configuration class created");
    }

Консоль выводит: «создан класс конфигурации», поэтому ParentApplication по какой-то причине инициируется Springboot, так же как и класс, который я хочу исключить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...