67,514
社区成员
发帖
与我相关
我的任务
分享
public class ServiceLocator implements BeanFactoryAware {
private static BeanFactory beanFactory = null;
private static ServiceLocator servlocator = null;
public void setBeanFactory(BeanFactory factory) throws BeansException {
this.beanFactory = factory;
}
public BeanFactory getBeanFactory() {
return beanFactory;
}
public static ServiceLocator getInstance() {
if (servlocator == null)
servlocator = (ServiceLocator) beanFactory.getBean("serviceLocator");
return servlocator;
}
/**
* 根据提供的bean名称得到相应的服务类
*
* @param servName
* bean名称
*/
public static Object getService(String servName) {
return beanFactory.getBean(servName);
}
}
这样在你的工程中任何地方想获取到spring上下文中的bean实例都可以通过ServiceLocator类来获得,堪称两全其美,内圣外王!!/**
* 服务器启动关闭的监听器
* @version 1.0
*/
public class GlobalListener implements ServletContextListener {
private static final Logger log = LoggerFactory.getLogger(GlobalListener.class);
private Timer timer = new Timer();
/**
* 关闭服务器
*/
public void contextDestroyed(ServletContextEvent event) {
log.info("关闭服务器");
timer.cancel();
}
/**
* 启动服务器
*/
public void contextInitialized(ServletContextEvent event) {
log.info("启动服务器");
FrameConfig.waterImgPath = "/common_res/images/water.jpg";
FrameConfig.maxCacheSize = 10000;
FrameConfig.encoding = "UTF-8";
timer.schedule(new TaskTimer(), getMillisecond(), Task.daySeconds * 1000l);// 每天执行一次
}
// 从现在到明天最早时间相差的毫秒数
private Long getMillisecond() {
DateUtil util = DateUtil.getBean();
String beginTime = util.getDetachDate(util.getNowDate(0) + " 00:00:00", 2, Task.daySeconds.intValue());
return util.getDateDiff(util.getNowDate(1), beginTime) * 1000l;
}
}
/**
* 每天最早时间刷新客服回访任务的定时器
* @version 1.0
*/
public class TaskTimer extends TimerTask {
private static final Logger log = LoggerFactory.getLogger(TaskTimer.class);
@Override
public void run() {
TaskMng mng = (TaskMng) BeanContainer.getBean(TaskMng.class);
Integer num = mng.renovate();
log.info("今天最早时间产生了" + num + "个客服回访任务");
CrmHistory.CRM_HISTORY_MAP = new HashMap<String, List<CrmHistory>>();
}
}
web.xml
<listener>
<listener-class>com.xxx.GlobalListener</listener-class>
</listener>