0

別の springboot アプリケーションに依存する springboot アプリを開発しています。ほとんどの Bean を親の springboot アプリに含めたいのですが、1 つだけです。

ParentApplication クラスに触れずに、親パッケージがスキャンした 1 つの springboot Bean を除外するにはどうすればよいですか?

私が試したがうまくいかない方法:

1: アプリケーション クラスで除外フィルタリングを使用して、特定の Bean クラスを除外します。

2: Bean クラスと親構成クラスの両方を除外しようとしました。

3: 除外したい bean クラスに 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.");
}

}

私の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 によって開始され、除外したいクラスも開始されます。

4

1 に答える 1