第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring boot應(yīng)用程序啟動時如何緩存數(shù)據(jù)

Spring boot應(yīng)用程序啟動時如何緩存數(shù)據(jù)

吃雞游戲 2023-01-05 17:15:03
我有一個連接到 SQL Server 數(shù)據(jù)庫的 Spring boot 應(yīng)用程序。我需要一些幫助來在我的應(yīng)用程序中使用緩存。我有一個 CodeCategory 表,其中包含許多代碼的代碼列表。該表將每月加載一次,數(shù)據(jù)每月僅更改一次。我想在應(yīng)用程序啟動時緩存整個表。在對表的任何后續(xù)調(diào)用中,都應(yīng)從此緩存中獲取值,而不是調(diào)用數(shù)據(jù)庫。例如,List<CodeCategory> findAll();我想在應(yīng)用程序啟動期間緩存上面的數(shù)據(jù)庫查詢值。如果有像這樣的數(shù)據(jù)庫調(diào)用,List<CodeCategory> findByCodeValue(String code)應(yīng)該從已經(jīng)緩存的數(shù)據(jù)中獲取代碼結(jié)果,而不是調(diào)用數(shù)據(jù)庫。請讓我知道如何使用 spring boot 和 ehcache 來實現(xiàn)這一點。
查看完整描述

4 回答

?
搖曳的薔薇

TA貢獻1793條經(jīng)驗 獲得超6個贊

正如所指出的,設(shè)置 ehcache 需要一些時間,并且不能完全與@PostConstruct. 在這種情況下,使用ApplicationStartedEvent加載緩存。


GitHub 倉庫:spring-ehcache-demo


@Service

class CodeCategoryService{


   @EventListener(classes = ApplicationStartedEvent.class )

   public void listenToStart(ApplicationStartedEvent event) {

        this.repo.findByCodeValue("100");

   }


}


interface CodeCategoryRepository extends JpaRepository<CodeCategory, Long>{


    @Cacheable(value = "codeValues")

    List<CodeCategory> findByCodeValue(String code);

}



注意:其他人指出的方法有多種。您可以根據(jù)自己的需要進行選擇。


查看完整回答
反對 回復(fù) 2023-01-05
?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

我的方法是定義一個通用的緩存處理程序


@FunctionalInterface

public interface GenericCacheHandler {


List<CodeCategory> findAll();

 }

及其實現(xiàn)如下


@Component

@EnableScheduling  // Important

public class GenericCacheHandlerImpl implements GenericCacheHandler {


@Autowired

private CodeRepository codeRepo;


private List<CodeCategory> codes = new ArrayList<>();


@PostConstruct

private void intializeBudgetState() {

    List<CodeCategory> codeList = codeRepo.findAll();

    // Any customization goes here

    codes = codeList;

}


@Override

public List<CodeCategory> getCodes() {

    return codes;

}

}

在服務(wù)層調(diào)用如下


@Service

public class CodeServiceImpl implements CodeService {


@Autowired

private GenericCacheHandler genericCacheHandler;


@Override

public CodeDTO anyMethod() {

    return genericCacheHandler.getCodes();

}   

}


查看完整回答
反對 回復(fù) 2023-01-05
?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

使用CommandLineRunner接口?;旧希梢詣?chuàng)建一個 Spring @Component 并實現(xiàn) CommandLineRunner 接口。您將不得不重寫它的運行方法。run 方法將在應(yīng)用程序啟動時調(diào)用。


@Component

public class DatabaseLoader implements 

CommandLineRunner {


   @override

   Public void run(.... string){

     // Any code here gets called at the start of the app.

  }}

這種方法主要用于使用一些初始數(shù)據(jù)引導(dǎo)應(yīng)用程序。


查看完整回答
反對 回復(fù) 2023-01-05
?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

使用二級休眠緩存來緩存所有需要的數(shù)據(jù)庫查詢。


為了在應(yīng)用程序啟動時緩存,我們可以在任何服務(wù)類中使用@PostContruct。


語法將是:-


@Service

public class anyService{


  @PostConstruct

  public void init(){

     //call any method

 }

}


查看完整回答
反對 回復(fù) 2023-01-05
  • 4 回答
  • 0 關(guān)注
  • 322 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號