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 codeMap = new HashMap(); public static Map companyMap = new HashMap(); @Autowired private CityDao cityDao; @Autowired private CompanyDao companyDao; @PostConstruct public void init() { //系统启动中。。。加载codeMap List codeList = cityDao.selectCityNameAndCodeALL(); for (TownNameDto code : codeList) { codeMap.put(code.getTownCode() + code.getValue(), code); List companyModels = companyDao.selectCompanies(); for (CompanyModel company : companyModels) { companyMap.put(company.getCode(), company); @PreDestroy public void destroy() { //系统运行结束 @Scheduled(cron = "0 0 0/2 * * ?") public void testOne() { //每2小时执行一次缓存 init();
//从缓存中获取城市;
        Map<String, TownNameDto> cityModelMap = CodeCache.codeMap;
        Map<String, CompanyModel> companyModelMap = CodeCache.companyMap;
声明:有写字典数据不会频繁更新,但是会频繁查询,想要减少数据库链接次数,把内容缓存到项目的全局变量中,提高方法查询速度代码:import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;import java.util.HashMap;import java.util.List;imp... 实际应用中,我们会有在 项目 服务启动完成以后去加载一些 数据 或做一些事情(比如 缓存 )这样的需求。 为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。很简单,只需要一个类就可以,无需其他配置。 Spring Boot应用程序在启动后,会遍历CommandLineRunner接口的实例并运行它们的run方法。也可以利用@Order注解(或者实现Order接口)来规定所有Comma
博客地址:https://blog.csdn.net/fukaiit/article/details/92853086 1. 启动后访问http://localhost:8848/code,可见控制台输出codeMap中的值 2. 新建一个只有key和value两个字段的表code 3. 不要轻易浪费积分下载代码,没什么实质内容
这篇文章介绍的是一个jar给不同的客户部署需要改变某些秘钥的值时,可以采用application的 全局变量 来配置,避免多次打包的繁琐。 第一种方式 直接在application.yml里写 test: niuBi: 芦苇 ceShi: 测试 使用的时候在类里面加上 @Value("${test.niuBi}") private String niuBi; @Value("${test.ceShi}") private String ceShi; 然后就可以直接当做普通变量使用,配
项目 启动时 读取一次 数据 库参数,以后直接使用 新建一个InitDataListener类,实现InitializingBean, ServletContextAware,变量声明为静态全局的,直接使用就可以 import javax.annotation.Resource; import javax.servlet.ServletContext; @Service public class InitDataListener implements InitializingBean, ServletContext
介绍:接下来我会把学习阶段学到的框架等知识点进行整合,每一次整合是在前一章的基础上进行的,所以后面的整合不会重复放前面的代码。每次的demo我放在结尾,本次是接着上一章的内容延续的,只增加新增的或者修改的代码。 上一章是改造整合redis实现启动服务即将热点 数据 保存在全局以及redis中,方便其他接口使用,本章整合quartz框架,实现定时任务的优化,前面整合的定时任务是使用的spring的Scheduled注解方式实现的,本章整合quartz任务调度框架。 Quartz可以用来创建简单或为运行十个,
1.定义全局异常处理类GlobalExceptionHandler @ControllerAdvice可以用于实现全局异常处理,该注解 用于标注一个类,类中可以定义多个方法,不同的方法处 理不同的异常。 使用@RestControllerAdvice标注类上,该注解包含了@ControllerAdvice功能 使用@ExceptionHandler标注各种异常处理方法 package com.ck.handler; import com.ck.vo.ReturnResult; @Controller//在Spring中注册,表示本类是一个控制器类 public class ViewController { @RequestMapping("toview")//完整路径url http://localhost:8080/toview public String view(){
有时候我们需要在启动工程的时候,加载一些 数据 ,赋值给静态 全局变量 (例如: 数据 字典,配置信息等),这是可以这麽做: 新建class 实现ApplicationRunner 类,重写方法就行了,然后就可以在 项目 任何一个地方使用了 注意:此作用是用于查询 数据 库中配置信息的,且只在启动的时候查一次,如果该参数经常修改建议不要用这种方法。如果 数据 库配置修改了,一定要重新启动该 项目 才能生效 下边是我写...