欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot緩存的使用實(shí)踐

 更新時間:2018年06月02日 09:21:45   作者:luckyxl029  
這篇文章主要介紹了springboot緩存的使用,spring針對各種緩存實(shí)現(xiàn),抽象出了CacheManager接口,用戶使用該接口處理緩存,而無需關(guān)心底層實(shí)現(xiàn),感興趣的小伙伴們可以參考一下

spring針對各種緩存實(shí)現(xiàn),抽象出了CacheManager接口,用戶使用該接口處理緩存,而無需關(guān)心底層實(shí)現(xiàn)。并且也可以方便的更改緩存的具體實(shí)現(xiàn),而不用修改業(yè)務(wù)代碼。下面對于在springboot中使用緩存做一簡單介紹:

1、添加依賴

<dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-cache</artifactId> 
</dependency> 

2、在配置類里開啟緩存,如下圖所示:

3、在需要使用緩存的方法上加上注解,如下:

@Override 
  //@CachePut 該注解會將方法的返回值緩存起來,其中緩存名字是 people,數(shù)據(jù)的key是person的id 
  @CachePut(value = "people", key = "#person.id") 
  public Person save(Person person) { 
    Person p = personRepository.save(person); 
    System.out.println("為id、key為:"+p.getId()+"數(shù)據(jù)做了緩存"); 
    return p; 
  } 
@Override 
  //@CacheEvict 該注解會刪除people緩存中key為id 的數(shù)據(jù) 
  @CacheEvict(value = "people", key = "#id") 
  public void remove(Long id) { 
    System.out.println("刪除了id、key為"+id+"的數(shù)據(jù)緩存"); 
    //這里不做實(shí)際刪除操作 
  }
@Override 
  //@Cacheable 該注解會在方法執(zhí)行時,判斷緩存people中key為#person.id 
的緩存是否存在,如果存在,則直接返回緩存中的數(shù)據(jù)。如果不存在,則會查數(shù)據(jù)庫,然后將返回結(jié)果緩存起來。 
  @Cacheable(value = "people", key = "#person.id") 
  public Person findOne(Person person) { 
    Person p = personRepository.findOne(person.getId()); 
    System.out.println("為id、key為:"+p.getId()+"數(shù)據(jù)做了緩存"); 
    return p; 
  }

以上幾部就完成了緩存,但是現(xiàn)在的緩存是默認(rèn)的基于內(nèi)存的,沒有實(shí)現(xiàn)持久化。下面以redis作為緩存的具體實(shí)現(xiàn),如下:

4、添加依賴

<dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-redis</artifactId> 
</dependency> 

5、在配置文件里添加redis配置

redis.hostname=localhost 
redis.port=6379 

6、在spring容器中配置redis

@Configuration 
public class RedisConfig extends CachingConfigurerSupport{ 
  private static final Logger logger = LoggerFactory.getLogger(RedisConfig.class); 
 
  @Autowired 
  private Environment env; 
 
  @Bean 
  public JedisConnectionFactory redisConnectionFactory() { 
    JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); 
    redisConnectionFactory.setHostName(env.getProperty("redis.hostname")); 
    redisConnectionFactory.setPort(Integer.parseInt(env.getProperty("redis.port"))); 
    return redisConnectionFactory; 
  } 
 
  @Bean 
  public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) { 
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<>(); 
    redisTemplate.setConnectionFactory(cf); 
    return redisTemplate; 
  } 
 
  @Bean 
  public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) { 
    RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); 
    cacheManager.setDefaultExpiration(600); 
    return cacheManager; 
  } 
   
} 

ok,完成了,其他什么都不用改,是不是很方便?

另外,要緩存的類必須序列化。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot+MinIO實(shí)現(xiàn)對象存儲的示例詳解

    SpringBoot+MinIO實(shí)現(xiàn)對象存儲的示例詳解

    MinIO?是一個基于Apache?License?v2.0開源協(xié)議的對象存儲服務(wù),它是一個非常輕量的服務(wù),可以很簡單的和其他應(yīng)用的結(jié)合,所以下面我們就來看看SpringBoot如何整合MinIO實(shí)現(xiàn)對象存儲吧
    2023-10-10
  • 淺析SpringBoot中常見的底層注解

    淺析SpringBoot中常見的底層注解

    Spring?Boot?是一個用于創(chuàng)建獨(dú)立的、基于Spring框架的Java應(yīng)用程序的框架,它提供了許多注解,下面小編就來和大家介紹一些常見的底層注解吧
    2023-08-08
  • 解決Spring Data Jpa 實(shí)體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題

    解決Spring Data Jpa 實(shí)體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題

    這篇文章主要介紹了解決Spring Data Jpa 實(shí)體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 談?wù)勗贘ava發(fā)送郵件中遇到的的問題

    談?wù)勗贘ava發(fā)送郵件中遇到的的問題

    本文介紹了在利用Java發(fā)送郵件過程中遇到的的兩個問題,以及如何解決這兩個問題。如果大家也遇到了這些問題,可以來參考借鑒。
    2016-08-08
  • SpringBoot集成selenium實(shí)現(xiàn)自動化測試的代碼工程

    SpringBoot集成selenium實(shí)現(xiàn)自動化測試的代碼工程

    Selenium?是支持web?瀏覽器自動化的一系列工具和[庫]?它提供了擴(kuò)展來模擬用戶與瀏覽器的交互,用于擴(kuò)展瀏覽器分配的分發(fā),本文給大家介紹了SpringBoot集成selenium實(shí)現(xiàn)自動化測試的代碼工程,需要的朋友可以參考下
    2024-08-08
  • eclipse連接不到genymotion問題的解決方案

    eclipse連接不到genymotion問題的解決方案

    今天小編就為大家分享一篇關(guān)于eclipse連接不到genymotion問題的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 記一次Maven項(xiàng)目改造成SpringBoot項(xiàng)目的過程實(shí)踐

    記一次Maven項(xiàng)目改造成SpringBoot項(xiàng)目的過程實(shí)踐

    本文主要介紹了Maven項(xiàng)目改造成SpringBoot項(xiàng)目的過程實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解Java設(shè)計(jì)模式——命令模式

    詳解Java設(shè)計(jì)模式——命令模式

    這篇文章主要介紹了Java設(shè)計(jì)模式——命令模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java的Netty進(jìn)階之Future和Promise詳解

    Java的Netty進(jìn)階之Future和Promise詳解

    這篇文章主要介紹了Java的Netty進(jìn)階之Future和Promise詳解,Netty 是基于 Java NIO 的異步事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,使用 Netty 可以快速開發(fā)網(wǎng)絡(luò)應(yīng)用,Netty 提供了高層次的抽象來簡化 TCP 和 UDP 服務(wù)器的編程,但是你仍然可以使用底層的 API,需要的朋友可以參考下
    2023-11-11
  • 詳解netty中的frame解碼器

    詳解netty中的frame解碼器

    netty為我們提供了一些合適的frame解碼器,通過使用這些frame解碼器可以有效的簡化我們的工作,這篇文章主要介紹了netty中的frame解碼器,需要的朋友可以參考下
    2022-04-04

最新評論