Springboot 在项目启动时将数据缓存到全局变量

摘要:
书面词典数据不会经常更新,但会经常查询。为了减少数据库链接的数量,请缓存项目全局变量中的内容,并提高方法查询速度importjavax。注释。后期构造;importjavax.annotation。预销毁;导入java.util。HashMap;导入java.util。列表导入java.util。地图;@堆肥

有写字典数据不会频繁更新,但是会频繁查询,想要减少数据库链接次数,把内容缓存到项目的全局变量中,提高方法查询速度

 
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, TownNameDto> codeMap = new HashMap<String, TownNameDto>();
    public static Map<String, CompanyModel> companyMap = new HashMap<String, CompanyModel>();
 
    @Autowired
    private CityDao cityDao;
    @Autowired
    private CompanyDao companyDao;
 
 
    @PostConstruct
    public void init() {
        //系统启动中。。。加载codeMap
        List<TownNameDto> codeList = cityDao.selectCityNameAndCodeALL();
        for (TownNameDto code : codeList) {
            codeMap.put(code.getTownCode() + code.getValue(), code);
        }
        List<CompanyModel> 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;

转自:https://blog.csdn.net/Alice_qixin/article/details/101547611

免责声明:文章转载自《Springboot 在项目启动时将数据缓存到全局变量》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ESP32开发(2)esp32-cam采集图像JavaFx版本植物大战僵尸下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pgsql 聚合函数array_to_string,ARRAY_AGG

array_to_string--将sql中的数组转为字符串 ARRAY_AGG--将sql中的数据转为数组处理 以下给大家一个简单的例子即可体会: 1.需求     2.数据库中原数据   1.png 3.sql的写法,以及运行结果   3.png 作者:那钱有着落吗链接:https://www.jianshu.com/...

C#编程中关于数据缓存的经验总结

C#编程中关于数据缓存的经验总结一直以来,我都发现程序的运行速度不够理想。通过查代码,发现程序对数据库的访问非常频繁,而且检索出来的数据量比较大。为了让程序运行快起来,我想对程序采用适当的缓存方法。我在C#尝试了5种方法进行数据缓存,具体如下:(如有遗漏,错误欢迎大家指正,欢迎提建议。)1:Session方法:此方法是针对于每个用户来的,如果用户量比较大,...

三步轻松打造微信聊天机器人(附源码)

    最近微信公众平台开发是热门,我也跟风做了一个陪聊的公众号。       其实类似的自动回话程序早就有了,比如前一阵很火的小黄鸡(还是小黄鸭来着?)。但尽管是跟风,也要体现一些不同。别人做的都是中文陪聊,咱就来做个英语陪聊。       不管是中文还是英文,做起来都一样,都是利用网络上的接口。或者你也可以试着自己开发一个陪聊程序。       随便在...

Java 后端微信支付demo

Java 后端微信支付demo 一、导入微信SDK 二、在微信商户平台下载证书放在项目的resources目录下的cert文件夹下(cert文件夹需要自己建) 三、实现微信的WXPayConfig接口 1 packagecom.ieou.demo.common; 2 3 4 importcom.github.wxpay.sdk.WXPayCo...

Rust 智能指针(一)

Rust 智能指针(一) 1.Box<T> Box<T>是指向堆中的指针。 fn main() { let box = Box::new(3); println!("{}", box); } 在出了指针的作用域之后,指针和它指向的对象都将被释放。 在本例中,box将在main函数之后被释放。 由于Box<T&...

企业微信开发之向员工付款(C#)

一、企业微信API 地址:http://work.weixin.qq.com/api/doc#11545 二、参数说明 1、向员工付款 请求方式:POST(HTTPS)请求地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/paywwsptrans2pocket是否需要证书:请求需要双向...