项目启动初始化加载配置

主要利用initializingbean对象和scheduledexecutor线程池,来实现统一封装的;

线程池

1,可重新弄加载初始化bean对象 接口类配置
public interface IReloadConfig{
        //重新加载api
        void reload();
    }

2.抽象的公共方法,可项目启动初始化加载bean,也可手动触发时间,决定某一个bean对象进行重新加载配置
public absract class AbstractReloadConfig implements IReloadConfig,InitializingBean,DisposableBean{

    //更新执行器
    private Runnable runnable;//起线程执行
    //定义线程池,1个线程池,无界队列,
    private ScheduledExecutorService service;//service.submit可对当前bean对象重新加载配置

    @Override
    public final void afterPropertiesSet() throws Exception{
        
        service = Executors.newSingleThreadScheduledExecutor();//定义线程池
         
        this.runnable = createRunnable();//公共方法,不同bean对象初始化操作
        this.runnable,run();
    }

        
    @Override
    public final void destroy()  throw Exception{
        if(service != null){
            service.shutdoen();//bean对象在项目停止的时候,销毁对象的同事,杀掉调度
        }
    }

    @Override
    public final void reload(){
        try{
            service.submit(this.runnable);//重新加载某对象时,会使用改方法,重新初始化bean对象
        }catch(Exception e){
        
        }
    }

    //抽取公共方法,方便初始化加载
    protected abstract Runnable createRunnable();
}


3.样例,初始化某一bead对象,例如获取数据字典配置
@Service("ConfigUpdateTime")
public class commConfig extend AbstractReloadCOnfig{
    
    //定义接收对象
    private Map<String,Object> commfig;
    
    @Overrid
    protected Runnable createRunnable(){
            return () -> {
                logger.info();
                    //组装数据结构,commfig;
                 logger.info("结束");
            };
        }

    //该bean对象,初始化加载完数据之后,可针对获取的数据,抽取公共方法,例如转账参数,1 -> 2
    public Sting transform()String source{
        //略
    }
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值