加载多个实现类实现了同一个接口方法

来源:互联网 发布:字符串拼接函数 js 编辑:程序博客网 时间:2024/06/05 14:29

package cn.com.btmu.art.framework.common.cache;

import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cn.com.btmu.art.framework.util.FactoryBeanUtil;
/**
 * 查询配置文件中所有实现了ICacheService接口的实现类
 * 进行加载
 * 
 * */
public class CacheInitialization{
  protected final Logger logger = LoggerFactory.getLogger(CacheInitialization.class);

 /**
  * 项目启动的时候开启一个监听器去执行你要加载的代码
  * servlet 有监听器
  * 初始化缓存
  * 
  * */
  public  void initialize(){
   try {
    //读取缓存配置文件
    CacheUtil.initCache(null);


    //启动load
    Map<String, ICacheService> cacheBeans = FactoryBeanUtil.getApplicationContext().getBeansOfType(ICacheService.class);
    if(null!=cacheBeans && cacheBeans.size()>0) {
     Set<Entry<String, ICacheService>> entSet = cacheBeans.entrySet();
     Iterator<Entry<String,ICacheService>> iter = entSet.iterator();
     
     while(iter.hasNext()){
      Entry<String,ICacheService> entBean = iter.next();

      try{
      
      if(null!=entBean){
       //调ICacheService接口load方法
       entBean.getValue().load();
       
      }
      }catch(Exception e){
       logger.error(entBean.getValue()+"出错!",e);
      }
      }
     
    }
 
  } catch (Exception e) {
   logger.error("启动所有实现缓存的类出错!",e);
  }
  
  }


 

 
}

0 0
原创粉丝点击