国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Springboot+Mybatis集成自定義緩存Ehcache用法

Springboot+Mybatis集成自定義緩存Ehcache用法

2021-09-26 22:55IT技術分享社區郝光明 Java教程

EhCache 是一個純Java的進程內緩存管理框架,屬于開源的Java分布式緩存框架,主要用于通用緩存,Java EE和輕量級容器。

Springboot+Mybatis集成自定義緩存Ehcache用法

今天小編給大家整理了springboot+mybatis集成自定義緩存ehcache用法筆記,希望對大家能有所辦幫助!

一、ehcache介紹

EhCache 是一個純Java的進程內緩存管理框架,屬于開源的Java分布式緩存框架,主要用于通用緩存,Java EE和輕量級容器。

1、特點

1. 簡單、快速

2. 提供多種緩存策略

3. 緩存數據可分兩級:內存和磁盤

4. 緩存數據會在服務器重啟的過程中重新寫入磁盤

.5 可以通過RMI、可插入API等方式進行分布式緩存

6. 具有緩存和緩存管理器的偵聽接口

7. 支持多緩存管理器實例,以及一個實例的多個緩存區域

8. 提供了Hibernate的緩存實現

2、應用場景

單應用或對緩存訪問性能要求很高的應用

適合簡單共享

適合緩存內容不大的場景,比如MyBatis自定義緩存、系統配置信息、頁面緩存。

二、springboot+mybatis集成ehcache步驟

Spring Boot 的緩存機制

高速緩存抽象不提供實際存儲,并且依賴于由org.springframework.cache.Cache和org.springframework.cache.CacheManager接口實現的抽象。 Spring Boot根據實現自動配置合適的CacheManager,只要緩存支持通過@EnableCaching注解啟用即可。

1、添加ehcache.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.     xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
  4.     <diskStore path="java.io.tmpdir" /> 
  5.  
  6.     <!-- 配置提供者 1、peerDiscovery,提供者方式,有兩種方式:自動發現(automatic)、手動配置(manual) 2、rmiUrls,手動方式時提供者的地址,多個的話用|隔開 --> 
  7.     <cacheManagerPeerProviderFactory 
  8.         class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
  9.         properties="peerDiscovery=manual,rmiUrls=//127.0.0.1:40002/userCache" /> 
  10.     <!-- <cacheManagerPeerProviderFactory 
  11.         class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
  12.         properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446,timeToLive=255"/> 
  13.  --> 
  14.     <!-- 配置監聽器 1、hostName 主機地址 2、port 端口 3、socketTimeoutMillis socket子模塊的超時時間,默認是2000ms --> 
  15.     <cacheManagerPeerListenerFactory 
  16.         class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
  17.         properties="hostName=127.0.0.1, port=40001, socketTimeoutMillis=2000" /> 
  18.     <!-- <cacheManagerPeerListenerFactory 
  19.          class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/> --> 
  20.  
  21.  
  22.     <defaultCache eternal="false" maxElementsInMemory="1000" 
  23.         overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0" 
  24.         timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" /> 
  25.  
  26.     <cache 
  27.         name="userCache" 
  28.         maxElementsInMemory="1000" 
  29.         eternal="false" 
  30.         timeToIdleSeconds="300" 
  31.         timeToLiveSeconds="300" 
  32.         overflowToDisk="false" 
  33.         memoryStoreEvictionPolicy="LRU"
  34.  
  35.  
  36.         <!-- 配置緩存事件監聽器 replicateAsynchronously 操作是否異步,默認值為true. replicatePuts 添加操作是否同步到集群內的其他緩存,默認為true. 
  37.             replicateUpdates 更新操作是否同步到集群內的其他緩存,默認為true. replicateUpdatesViaCopy 更新之后的對象是否復制到集群中的其他緩存(true); 
  38.             replicateRemovals 刪除操作是否同步到集群內的其他緩存,默認為true--> 
  39.         <cacheEventListenerFactory 
  40.             class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
  41.             properties=" 
  42.                     replicateAsynchronously=true
  43.                     replicatePuts=true
  44.                     replicateUpdates=true
  45.                     replicateUpdatesViaCopy=true
  46.                     replicateRemovals=true " /> 
  47.  
  48.  
  49.          <!-- 初始化緩存,以及自動設置 --> 
  50.         <bootstrapCacheLoaderFactory 
  51.             class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" 
  52.             properties="bootstrapAsynchronously=true" /> 
  53.  
  54.     </cache> 
  55.  
  56. </ehcache> 

2、配置 application.properyies

  1. #cache 配置cache  
  2.  
  3. spring.cache.cache-names=userCache  
  4. spring.cache.jcache.config=classpath:ehcache.xml 

3、springboot啟動類增加注解@EnableCaching

  1. @SpringBootApplication 
  2. @ComponentScan(basePackages="com.ehcache")//掃描組件 
  3. @EnableCaching 
  4. public class EhcacheTestApplication { 
  5.  
  6.     public static void main(String[] args) { 
  7.         SpringApplication.run(EhcacheTestApplication.class, args); 
  8.     } 

4、UserInfoService.java 文件增加緩存注解

  1. @Service 
  2. public class UserInfoService { 
  3.  
  4.     @Autowired 
  5.     private UserDao userDao; 
  6.  
  7.     @CacheEvict(key="'user_'+#uid", value="userCache"
  8.     public void del(String uid) {        
  9.         userDao.del(uid); 
  10.     } 
  11.  
  12.     @CachePut(key="'user_'+#user.id", value="userCache"
  13.     public void update(User user) { 
  14.         userDao.update(user); 
  15.     } 
  16.  
  17.     @Cacheable(key="'user_'+#id",value="userCache"
  18.     public User getUserById(String id){      
  19.         return userDao.findById(id);    } 
  20.  
  21.     @CacheEvict(key="'user'",value="userCache"
  22.     public String save(User user) {         
  23.         return userDao.save(user); 
  24.     } 

5、增加測試控制器TestController.java

  1. package com.ehcache.controller; 
  2.  
  3. import java.util.ArrayList; 
  4. import java.util.HashMap; 
  5. import java.util.List; 
  6. import java.util.Map; 
  7.  
  8. import javax.servlet.http.HttpServletRequest; 
  9.  
  10. import org.springframework.beans.factory.annotation.Autowired; 
  11. import org.springframework.cache.annotation.CachePut; 
  12. import org.springframework.cache.annotation.Cacheable; 
  13. import org.springframework.web.bind.annotation.RequestMapping; 
  14. import org.springframework.web.bind.annotation.RequestMethod; 
  15. import org.springframework.web.bind.annotation.RequestParam; 
  16. import org.springframework.web.bind.annotation.ResponseBody; 
  17. import org.springframework.web.bind.annotation.RestController; 
  18.  
  19. import com.ehcache.entity.User
  20. import com.ehcache.factory.CacheManagerFactory; 
  21. import com.ehcache.factory.UserFactory; 
  22. import com.ehcache.service.UserService; 
  23. import com.google.gson.Gson; 
  24.  
  25. import net.sf.ehcache.Element; 
  26.  
  27.  
  28. @RestController 
  29. @RequestMapping("/CacheTest"
  30. public class CacheTestController { 
  31.     @Autowired 
  32.     private UserService userService; 
  33.     Gson gson = new Gson(); 
  34.     CacheManagerFactory cmf = CacheManagerFactory.getInstance(); 
  35.     @RequestMapping(value = "/test", method = RequestMethod.GET) 
  36.     public String test(HttpServletRequest request){ 
  37.         // 新增新用戶 
  38.         String id = userService.save(UserFactory.createUser()); 
  39.         User user = userService.getUserById(id); 
  40.         user.setUsername("小明"); 
  41.         userService.update(user); 
  42.         // 查詢該用戶 
  43.         System.out.println(gson.toJson(userUser.class));       
  44.         System.out.println(); 
  45.         // 再查詢該用戶 
  46.         User user = userService.getUserById(uid); 
  47.         System.out.println(gson.toJson(userUser.class)); 
  48.         System.out.println(); 
  49.         // 更新該用戶 
  50.         userService.update(user); 
  51.         // 更新成功后再查詢該用戶        System.out.println(gson.toJson(userService.getUserById(id), User.class)); 
  52.         System.out.println(); 
  53.         // 刪除該用戶 
  54.         userService.del(id); 
  55.         System.out.println(); 
  56.         // 刪除后再查詢該用戶        System.out.println(gson.toJson(userService.getUserById(id), User.class)); 
  57.         return id; 
  58.     } 

個人博客網站:https://programmerblog.xyz

原文鏈接:https://mp.weixin.qq.com/s/nSC-7Rgx6G4PF40Z6DxNUQ

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲一区av在线 | 91精品一区二区三区久久久久久 | 久久天天躁狠狠躁夜夜免费观看 | 高清av在线| 欧美国产精品一区 | 午夜在线视频 | 国产亚洲精品久久久456 | 精品二区| 日日夜夜摸 | 夜夜超碰| 色婷婷精品久久二区二区蜜臂av | 夜夜爽99久久国产综合精品女不卡 | 国产欧美在线 | 天天玩天天操天天射 | 精品一区二区三区免费毛片爱 | 亚洲国产综合在线 | 亚洲国产精品久久久久 | 欧美freesex交免费视频 | 91色视频在线观看 | 国产三级久久久久 | 亚洲免费观看 | 国产精品中文字幕在线观看 | 在线观看亚洲 | 在线观看一区三区 | 搞黄视频在线观看 | 国产一区视频网站 | 国内自拍视频网 | 成人午夜毛片 | 一 级 黄 色 片免费网站 | 在线一级片 | 日韩欧美国产一区二区 | 视频三区 | 国产激情一区二区三区 | 欧美一区二区三区在线播放 | 亚洲欧美国产精品专区久久 | 亚洲成人av | 精品一二区 | 国产精品久久久久久婷婷天堂 | 亚洲精品专区 | 日韩国产在线观看 | 欧美日韩久久精品 |