springboot在项目启动时加载字典表数据进map内存,真实测试通过。

本文介绍如何在SpringBoot项目启动时,通过配置和编写代码将字典表数据加载到Map内存中,实现静态化,提高查询效率。实际测试已验证此方法可行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class DicMap {
    @Autowired
    private static CustomerDao customerDao;
    private static HashMap<String,String> hashMap=new HashMap<>();
    static {
        //在这里我们不能使用注入进来的customerDao,因为它此时还没有被创建出来,所以我们要在系统
        //运行的时候获取项目的上下文手动去获取这个bean
        customerDao = SpringUtil.getBean(CustomerDao.class);
        queryDic();
    }
    //把字典信息放到map中
    public static void queryDic(){
        List<Dictionary> dics=customerDao.findAllDictionary();
        for (int i = 0; i < dics.size(); i++) {
            Dictionary dic = dics.get(i);
            String divi = dic.getDivi();
            Integer code = dic.getCode();
            String value = dic.getVal();
            String key=divi+code;
            hashMap.put(key,value);
        }
    }
    //获取字典信息的具体方法
    public static String getDicVal(String divi,Integer code){
        String key=divi+code;
        String val = hashMap.get(key);
        return val;
    }
}

 

package com.yzt.demo.util;


import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
        System.out.println("---------------------------------------------------------------------");

        System.out.println("---------------------------------------------------------------------");

        System.out.println("---------------me.shijunjie.util.SpringUtil------------------------------------------------------");

        System.out.println("========ApplicationContext配置成功,在普通类可以通过调用SpringUtils.getAppContext()获取applicationContext对象,applicationContext="+SpringUtil.applicationContext+"========");

        System.out.println("---------------------------------------------------------------------");
    }

    //获取applicationContext
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    //通过name获取 Bean.
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    //通过class获取Bean.
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }

    //通过name,以及Clazz返回指定的Bean
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值