public interface CachedLoadService { MaploadHomeData(); } public class CachedUtils { private static Date lastSearchTime=null; private static Map mapMediaList=null; static Object lock = new Object(); public static Map getMediaList() { synchronized (lock) { CachedLoadService cachedLoadService=(CachedLoadService) SpringContextUtil.getBean("cachedLoadService"); //或者其它业务类 try { if(lastSearchTime==null) { mapMediaList=cachedLoadService.loadHomeData(); lastSearchTime=new Date(); } else { if(mapMediaList==null) { mapMediaList=cachedLoadService.loadHomeData(); lastSearchTime=new Date(); } else { mapMediaList=cachedLoadService.loadHomeData(); lastSearchTime=new Date(); } } return mapMediaList; } catch (Exception e) { return mapMediaList; } } }
}
cachedLoadService.loadHomeData() 就是一个 final static Map
**1.从内存方面来讲,spring通过动态代理,可以做到,需要什么的时候,就加载进来什么。而不像静态方法一样,在程序编译的时候就加载进来。
2.通过spring的IOC可以控制在程序整个生命周期,是需要始终维护一个对象(如单例模式),还是使用beanFactory一样分别产生不同的Java bean。**
你没有解决依赖问题,只是简单的解决对象创建问题,依赖才是最复杂的,
其实我也觉得没必要在每个 service 都写接口,除非那种复杂的业务,每个业务方法都接个接口烦都烦死了。