java-項目加載時將數據存儲到內存中


     1、獲取數據庫數據並存儲在Map對象中

package com.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class RegionServiceImpl  { //implements RegionService {

    @Autowired
    UserRepository userRepository;
    public static Map<Integer,String> regionMap = new HashMap<Integer, String>();

    public Map<Integer,String> initRegion(){
        if(regionMap.isEmpty()){
            List<Users> regionList = userRepository.findAll();
            for(Users r : regionList){
                regionMap.put(r.getId(),r.getName()+","+r.getSex());
            }
        }
        return  regionMap;
    }
    public Map<Integer,String> getAllRegionMap(){
        return getRegionMap();
    }

    public static Map<Integer, String> getRegionMap() {
        return regionMap;
    }

    public static void setRegionMap(Map<Integer, String> regionMap) {
        RegionServiceImpl.regionMap = regionMap;
    }

}

   2、在項目啟動時加載方法

package com.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class MyCommandLineRunner implements CommandLineRunner {
    @Autowired
    RegionServiceImpl regionService;
  
/**
* 線程啟動
*/

public void start(){
new Thread(new xiancheng()).start(); System.out.println(0); } @Override public void run(String... var1) throws Exception{ regionService.initRegion(); start(); System.out.println("初始化完成"); } }

  3、使用線程設置定時刷新數據

package com.demo;

public class xiancheng implements Runnable{


    public void run() {
        RegionServiceImpl regionService = new RegionServiceImpl();
        while (true) {
            regionService.initRegion();
            try {
                System.out.println(111);
                Thread.sleep(10 * 60);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM