springbootUtil クラスを作成して springboot コンテキストを取得し、springboot コンテキストで Bean を取得し、Bean で特定のビジネス ロジックを実行します。

SpringBootUtil.java

package springBootPlugin;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringBootUtil implements ApplicationContextAware{
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringBootUtil.applicationContext == null) {
            SpringBootUtil.applicationContext = applicationContext;
        }
    }

    //アプリケーションコンテキストの取得
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    //Bean を名前で取得します。
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    //クラスごとにBeanを取得します。
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }

    //指定された Bean を名前と Clazz で返します。
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }

}

あらゆるビジネス ロジックを処理できる単純なスレッド クラスを作成する。

ProjectRealTask.java

package springBootPlugin;

import org.springframework.stereotype.Component;

@Component
public class ProjectRealTask implements Runnable {
    @Override
    public void run() {
            System.out.println("test ProjectRealTask");
    }
}

メインの呼び出しクラスを作成し、呼び出しクラスの springbootUtil で Bean を取得し、Bean 内でビジネス ロジックを実行することで、ビジネス ロジックのプラグイン管理を実現します。

ProjectThread.java

package springBootPlugin;

import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;

@Component
public class ProjectThread {

    //ここでは、いくつかの Bean、サードパーティのビジネス ロジック、またはプラグインを呼び出す必要があります。
    public void runThreadTaskLogic(){

        //スレッドプールを作成する
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        taskExecutor.setCorePoolSize(10);
        taskExecutor.setMaxPoolSize(10);
        taskExecutor.setQueueCapacity(100);
        taskExecutor.setThreadNamePrefix("TestExecute_");
        taskExecutor.initialize();

        //クラス名でBeanを取得します
        ProjectRealTask realTask = SpringBootUtil.getBean(ProjectRealTask.class);

        //具体的な Bean の操作
        taskExecutor.submit(realTask);
    }

}

この方法は、マルチタスクおよびマルチスレッド処理のビジネス ロジック シナリオに非常に適しており、Bean の管理がより柔軟で便利になります。


发表回复

Thanks for your support to bet365fans!