中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot下EhCache緩存的使用

發布時間:2021-08-26 16:40:51 來源:億速云 閱讀:173 作者:chen 欄目:移動開發

本篇內容主要講解“Spring Boot下EhCache緩存的使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring Boot下EhCache緩存的使用”吧!

使用EhCache

本篇我們將介紹如何在Spring Boot中使用EhCache進程內緩存。這里我們將沿用之前的案例結果來進行改造,以實現EhCache的使用。

先回顧下這個基礎案例的三個部分:

User實體的定義

@Entity
@Data
@NoArgsConstructor
public class User {

   @Id
   @GeneratedValue
   private Long id;

   private String name;
   private Integer age;

   public User(String name, Integer age) {
       this.name = name;
       this.age = age;
   }
}

User實體的數據訪問實現(涵蓋了緩存注解)

@CacheConfig(cacheNames = 
"users")
public interface UserRepository extends JpaRepository<User, Long> {

   @Cacheable
   User findByName(String name);

}

測試驗證用例(涵蓋了CacheManager的注入,可用來觀察使用的緩存管理類)

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class Chapter51ApplicationTests {

   @Autowired
   private UserRepository userRepository;

   @Autowired
   private CacheManager cacheManager;

   @Test
   public void test() throws Exception {
       // 創建1條記錄
       userRepository.save(new User("AAA", 10));

       User u1 = userRepository.findByName("AAA");
       System.out.println("第一次查詢:" + u1.getAge());

       User u2 = userRepository.findByName("AAA");
       System.out.println("第二次查詢:" + u2.getAge());
   }

}

接下來我們通過下面的幾步操作,就可以輕松的把上面的緩存應用改成使用ehcache緩存管理。

第一步:在pom.xml中引入ehcache依賴

<dependency>
   <groupId>net.sf.ehcache</groupId>
   <artifactId>ehcache</artifactId>
</dependency>

在Spring Boot的parent管理下,不需要指定具體版本,會自動采用Spring Boot中指定的版本號。


Spring Boot下EhCache緩存的使用

第二步:在src/main/resources目錄下創建:ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="ehcache.xsd">

   <cache name="users"
          maxEntriesLocalHeap="200"
          timeToLiveSeconds="600">
   </cache>

</ehcache>

完成上面的配置之后,再通過debug模式運行單元測試,觀察此時CacheManager已經是EhCacheManager實例,說明EhCache開啟成功了。或者在測試用例中加一句CacheManager的輸出,比如:

@Autowired
private CacheManager cacheManager;

@Test
public void test( ) throws Exception {
   System.out.println("CacheManager type : " + cacheManager.getClass());

   userRepository.save(new User("AAA", 10));

   User u1 = userRepository.findByName("AAA");
   System.out.println("第一次查詢:" + u1.getAge());

   User u2 = userRepository.findByName("AAA");
   System.out.println("第二次查詢:" + u2.getAge());
}

執行測試輸出可以得到:

CacheManager type : class org.springframework.cache.ehcache.EhCacheCacheManager
Hibernate: select next_val as id_val from hibernate_sequence for update
Hibernate: update hibernate_sequence set next_val= ? where next_val=?
Hibernate: insert into user (age, name, id) values (?, ?, ?)
2020-07-14 18:09:28.465  INFO 58538 --- [           main] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
Hibernate: select user0_.id as id1_0_, user0_.age as age2_0_, user0_.name as name3_0_ from user user0_ where user0_.name=?
第一次查詢:10
第二次查詢:10

可以看到:

  1. 第一行輸出的CacheManager type為org.springframework.cache.ehcache.EhCacheCacheManager,而不是之前講的ConcurrentHashMap了。

  2. 第二次查詢的時候,沒有輸出SQL語句,所以是走的緩存獲取

整合成功!

到此,相信大家對“Spring Boot下EhCache緩存的使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玛沁县| 镇沅| 泸州市| 福泉市| 三台县| 夏河县| 开原市| 卢氏县| 衡阳县| 仙居县| 两当县| 瑞丽市| 峨山| 古浪县| 缙云县| 陆河县| 安多县| 锡林浩特市| 马边| 宜都市| 澎湖县| 敦化市| 苏尼特左旗| 桦南县| 乐业县| 汾阳市| 德阳市| 都兰县| 河间市| 莱西市| 汶上县| 高阳县| 临江市| 汉寿县| 定远县| 铅山县| 巴彦县| 渭南市| 唐河县| 漾濞| 平潭县|