想在后台中设置一个全局的缓存,即要缓存的数据仅在整个项目中初始化一次,最简单的做法就是将变量声明为 static 类型。
使用 staic 是存在局限性的,它的初始化顺序在 spring 注入实例之前,有时想在项目启动的时候,从数据库中查处数据,并且设置为缓存,那 static 估计要靠边了。
使用 InitializingBean 轻松解决这个问题。具体用法如下:
@Service public class CacheBean implements InitializingBean { @Autowired InfoStationRepository infoStationRepository; private Logger logger = LoggerFactory.getLogger(getClass()); private List<InfoStation> infoStationList; public List<InfoStation> getInfoStationList() { return infoStationList; } public void setInfoStationList(List<InfoStation> infoStationList) { this.infoStationList = infoStationList; logger.info("缓存站点信息数据成功!"); } private void loadCache(){ setInfoStationList(infoStationRepository.findAll()); } @Override public void afterPropertiesSet() throws Exception { loadCache(); } }