博彩公司BetWinner
伟德亚洲开户
bet365开户
易胜博开户指南
188bet开户指南
综合博彩评级
外围简介
当前位置:首页 > 体育与IT > 正文

Springboot通过类名获取bean,并通过类似插件的方式对bean进行管理。

发布时间: 2023-06-20 05:48:23   作者:本站编辑   来源: 本站原创   浏览次数:
摘要: Springboot通过类名获取bean,并通过类似插件的方式对bean进行管理。
bet365备用网址

创建一个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);
    }

    //按名称和 Clazz 返回指定的 bean。
    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的管理更加灵活方便。

原文地址...


--转载请注明出处:外围走地通(www.iwwbet.com)

  • 0

    开心

  • 0

    板砖

  • 0

    感动

  • 0

    有用

  • 0

    疑问

  • 0

    难过

  • 0

    无聊

  • 0

    震惊

我来说两句
评论内容:
验  证  码:
 
(网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。)
评论列表
已有 0 条评论(查看更多评论)
外围滚球网站滚球网站


友情链接
Processed in 0.228 second(s)
Powered by iwwbet Copyright © 2023-forever www.iwwbet.com, All Rights Reserved
本站由188BET特约赞助,为其官方指定资讯站,请记住我们的网址www.iwwbet.com
Bet365官方 188Bet官方
致力于打造全球最豪华的 滚球|走地|外围|博彩|在线投注|在线买球 独家博彩资讯网-滚球走地通
声明:本站提供资讯仅供体育爱好者浏览、分析购买足彩参考之用,其他一切行为与本站无关!

本网站主要浏览用户为台湾地区,以及世界其他地区的华语同胞,请大陆同胞遵守所在地法律!