Springboot项目启动时将数据缓存map中

Springboot项目启动时将数据缓存map中,测试通过

注意点

注意项目启动时容器对象还未初始化完成,不能用 @Autowired注入

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@Component
public class CodeCache {
   
    public static Map<String, String> map = new HashMap<String, String>();

    private static Logger logger = LoggerFactory.getLogger(CodeCache.class);
 
    private static CityDao cityDao;
 
 //不能用 @Autowired注入 此处手动注入对象
    public WxUtil(CityDao cityDao) {
        this.cityDao= cityDao;
    }
 
 
    @PostConstruct//优先执行
    public static  void init() {
       
        List<Properties> list= cityDao.selectCodeALL();
        for (Properties prop: list) {
            map.put(code.getKey(),code.getValue());
        }
        logger.info("map======"+map )
    }
 
    @PreDestroy
    public void destroy() {
        //系统运行结束
    }
  
    public static String getValue(String key) {
        return map.get(key);
    }
    //@Scheduled(cron = "0 0 0/2 * * ?")//每2小时执行一次缓存
  //  public void testOne() {init();}
 
}

调用CodeCache .getValue(“key”)

你可能感兴趣的:(项目)