最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存的示例代碼

 更新時(shí)間:2024年03月19日 09:41:15   作者:brightcon  
這篇文章主要介紹了SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存,Guava Cache是Google Guava庫(kù)中的一個(gè)模塊,提供了基于內(nèi)存的本地緩存實(shí)現(xiàn),文中介紹了SpringBoot整合使用Guava Cache的具體步驟,需要的朋友可以參考下

最近碰到的問題需要使用全局緩存。項(xiàng)目中沒有使用Redis,又是單體應(yīng)用,又要實(shí)現(xiàn)緩存那種時(shí)效性(HashMap沒有這種功能),后來找到了GuavaCache。Guava Cache是Google Guava庫(kù)中的一個(gè)模塊,提供了基于內(nèi)存的本地緩存實(shí)現(xiàn)。以下是整合使用Guava Cache的具體步驟:

一、添加Maven依賴

<dependencies>  
    <!-- 其他依賴 -->  
    <dependency>  
        <groupId>com.google.guava</groupId>  
        <artifactId>guava</artifactId>  
        <version>21.0</version>  
    </dependency>  
</dependencies>

二、創(chuàng)建Cache實(shí)例

可以包裝增強(qiáng)Cache實(shí)例再使用,或者直接創(chuàng)建一個(gè)全局的Cache實(shí)例使用。以下是對(duì)這兩種情況的創(chuàng)建使用說明。

①在服務(wù)類中創(chuàng)建緩存實(shí)例,對(duì)緩存進(jìn)行包裝,再使用。

import com.google.common.cache.Cache;  
import com.google.common.cache.CacheBuilder;  
import java.util.concurrent.TimeUnit;  
  
@Service  
public class MyService {  
  
    private final Cache<String, Object> myCache;  
  
    public MyService() {  
        this.myCache = CacheBuilder.newBuilder()  
                .expireAfterWrite(10, TimeUnit.MINUTES) // 設(shè)置緩存過期時(shí)間  
                .maximumSize(100) // 設(shè)置緩存最大容量  
                .build();  
    }  
  
    public Object getFromCache(String key) {  
        return myCache.getIfPresent(key);  
    }  
  
    public void putIntoCache(String key, Object value) {  
        myCache.put(key, value);  
    }  
  
    // 其他業(yè)務(wù)邏輯...  
}

在上面的例子中,創(chuàng)建了一個(gè)Guava Cache實(shí)例,并設(shè)置了寫入后10分鐘過期和最大容量為100條記錄的限制。

使用guava cache:

public TestService{
	@Autowired
	MyService myService;
 
    public Object getData(String key) {  
        Object cachedData = myService.getFromCache(key);  
		if (cachedData != null) {  
			return cachedData;  
		}  
      
		// 如果緩存中沒有數(shù)據(jù),則從數(shù)據(jù)源獲取并放入緩存  
		Object newData = fetchDataFromDataSource(key);  
		myService.putIntoCache(key, newData);  
		return newData;  
	}  
  
	private Object fetchDataFromDataSource(String key) {  
		// 模擬從數(shù)據(jù)源獲取數(shù)據(jù)的過程  
		// ...  
		return new Object();  
	}
}

② 配置為SpringBean

這個(gè)也是常用的方式。適用于不需要包裝增強(qiáng)的情況。配置為Spring管理的Bean,可以在配置類中創(chuàng)建一個(gè)Bean。

import com.google.common.cache.Cache;  
import com.google.common.cache.CacheBuilder;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
import java.util.concurrent.TimeUnit;  
  
@Configuration  
public class CacheConfig {  
  
    @Bean  
    public Cache<String, Object> myCache() {  
        return CacheBuilder.newBuilder()  
                .expireAfterWrite(10, TimeUnit.MINUTES)  
                .maximumSize(100)  
                .build();  
    }  
}

然后,在服務(wù)中,可以通過@Autowired注解來注入這個(gè)Bean:

import com.google.common.cache.Cache;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Service;  
  
@Service  
public class MyTestService {  
  
    private final Cache<String, Object> myCache;  
  
    @Autowired  
    public MyTestService(Cache<String, Object> myCache) {  
        this.myCache = myCache;  
    }  
  
    // 使用myCache進(jìn)行緩存操作...  
}

這樣,就可以在Spring Boot應(yīng)用中輕松地使用Guava Cache來緩存數(shù)據(jù)了。根據(jù)應(yīng)用需求調(diào)整緩存的過期時(shí)間和容量大小。

至此整合完成。

以上就是SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Guava Cache全局緩存的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java ReentrantLock詳解

    java ReentrantLock詳解

    這篇文章主要介紹了java ReentrantLock,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java Collection 移除元素方法及注意事項(xiàng)

    Java Collection 移除元素方法及注意事項(xiàng)

    這篇文章主要介紹了Java Collection 移除元素方法及注意事項(xiàng),通過一個(gè)簡(jiǎn)單實(shí)例給大家講解,需要的朋友可以參考下
    2020-01-01
  • Springboot入門案例及部署項(xiàng)目的詳細(xì)過程

    Springboot入門案例及部署項(xiàng)目的詳細(xì)過程

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程,本文給大家分享一個(gè)入門案例使用Springboot1.5.9搭建,具體配置部署過程跟隨小編一起看看吧
    2021-07-07
  • 如何使用Spring+redis實(shí)現(xiàn)對(duì)session的分布式管理

    如何使用Spring+redis實(shí)現(xiàn)對(duì)session的分布式管理

    本篇文章主要介紹了如何使用Spring+redis實(shí)現(xiàn)對(duì)session的分布式管理,本文主要是在Spring中實(shí)現(xiàn)分布式session,采用redis對(duì)session進(jìn)行持久化管理,感興趣的小伙伴們可以參考一下
    2018-06-06
  • mybatis源碼解讀-Java中executor包的語句處理功能

    mybatis源碼解讀-Java中executor包的語句處理功能

    這篇文章主要介紹了Java中executor包的語句處理功能,在mybatis映射文件中傳參數(shù),主要用到#{}或者${},下文圍繞相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • SpringCloud使用Zookeeper作為配置中心的示例

    SpringCloud使用Zookeeper作為配置中心的示例

    這篇文章主要介紹了SpringCloud使用Zookeeper作為配置中心的示例,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下
    2021-04-04
  • ChatGpt都使用的Java BPE分詞算法不要了解一下

    ChatGpt都使用的Java BPE分詞算法不要了解一下

    Byte Pair Encoding(BPE)是一種文本壓縮算法,它通常用于自然語言處理領(lǐng)域中的分詞、詞匯表構(gòu)建等任務(wù),本文將對(duì) BPE 算法進(jìn)行全面、詳細(xì)的講解,并提供 Java 相關(guān)的代碼示例,希望對(duì)大家有所幫助
    2023-06-06
  • SpringBoot CountDownLatch多任務(wù)并行處理的實(shí)現(xiàn)方法

    SpringBoot CountDownLatch多任務(wù)并行處理的實(shí)現(xiàn)方法

    本篇文章主要介紹了SpringBoot CountDownLatch多任務(wù)并行處理的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解spring cloud整合Swagger2構(gòu)建RESTful服務(wù)的APIs

    詳解spring cloud整合Swagger2構(gòu)建RESTful服務(wù)的APIs

    這篇文章主要介紹了詳解spring cloud整合Swagger2構(gòu)建RESTful服務(wù)的APIs,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解Java?加密解密和數(shù)字簽名問題

    詳解Java?加密解密和數(shù)字簽名問題

    在做項(xiàng)目中,只要涉及敏感信息,或者對(duì)安全有一定要求的場(chǎng)景,都需要對(duì)數(shù)據(jù)進(jìn)行加密。接下來通過本文給大家分享Java?加密解密和數(shù)字簽名問題,感興趣的朋友跟隨小編一起看看吧
    2021-12-12

最新評(píng)論

上饶县| 江孜县| 调兵山市| 尚义县| 灵宝市| 大化| 会昌县| 揭阳市| 白朗县| 名山县| 华亭县| 冕宁县| 南川市| 老河口市| 格尔木市| 泸州市| 田林县| 南昌县| 乌兰察布市| 墨江| 陵水| 乌苏市| 盐亭县| 盱眙县| 凯里市| 四子王旗| 长宁县| 漠河县| 遵义县| 阳城县| 航空| 九龙坡区| 新昌县| 瓮安县| 科尔| 保靖县| 丹凤县| 大田县| 古丈县| 龙里县| 秦安县|