springboot 启动加载全局缓存

有时候我们需要在启动工程的时候,加载一些数据,赋值给静态全局变量(例如:数据字典,配置信息等),这是可以这麽做:

新建class 实现 ApplicationRunner 类,重写方法就行了,然后就可以在项目任何一个地方使用了

注意:此作用是用于查询数据库中配置信息的,且只在启动的时候查一次,如果该参数经常修改建议不要用这种方法。如果数据库配置修改了,一定要重新启动该项目才能生效

下边是我写的一个例子

package com.example.quartz.dynamic.config;

import com.example.quartz.dynamic.entity.DicMap;
import com.example.quartz.dynamic.service.DicService;
import com.example.quartz.dynamic.service.IJobAndTriggerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;

/**
 * @Auther: lizk
 * @Date: 2019/8/2 14:21
 * @Description:
 */
@Component
public class ApplicationRunnerTest implements ApplicationRunner {

    @Autowired
    private DicService dicService;
    @Value("${txtFilePath}")
    private String txtFilePath;

    public static Map<String,Object> map=new HashMap<String,Object>();

    public static List<String> fileList=new ArrayList<String>();

    @Override
    public void run(ApplicationArguments args) {
        //初始化数据字典
        List<DicMap> dicMaps=dicService.findAll();
        for(DicMap dicMap:dicMaps){
            map.put(dicMap.getValue(),dicMap.getValue());
        }
        try {
            //初始化文件namemap
            FileInputStream fis=new FileInputStream(txtFilePath);
            InputStreamReader isr=new InputStreamReader(fis, "UTF-8");
            BufferedReader br = new BufferedReader(isr);
            String line="";
            while ((line=br.readLine())!=null) {
                if(!line.equals("")){
                    //转小写,去除空格和空白字符
                    fileList.add(line.trim());
                }
            }
            //关闭输入流
            br.close();
            isr.close();
            fis.close();
        }catch (Exception e){
            System.out.println("文件找不到");
        }

        //读取filename txt文件(每一行是一个文件名)
        System.out.println("ApplicationRunner start");
        System.out.println(fileList.size()+"------------------------------");
    }
}

 

 

使用:

                    //判断是否在字典里
                    if(ApplicationRunnerTest.map.containsKey(s.replaceAll("\\s*", ""))){
                        break;
                    }else{
                        str=str+s;
                        removeStr.add(s);
                    }

 

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,懒加载是一种机制,可以在需要使用时才加载bean,以减少启动时间。要开启懒加载功能,可以通过在配置文件(如application.properties或application.yaml)中设置spring.main.lazy-initialization=true来实现。这样,只有在第一次使用时才会加载bean。同时,可以在需要懒加载的bean上添加@Lazy注解,表示该bean是懒加载的。需要注意的是,懒加载可能会带来一些问题,所以需要进行适当的权衡和测试。另外,还可以通过编码的方式设置全局加载,即通过设置SpringApplication的lazyInitialization属性来控制懒加载的行为。例如,使用SpringApplication的setLazyInitialization(false)方法可以禁用全局加载。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [懒加载SpringBoot](https://blog.csdn.net/weixin_54931655/article/details/131597703)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Springboot之Bean懒加载的实现详解](https://blog.csdn.net/A_art_xiang/article/details/127868331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值