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

tio-boot框架整合ehcache實現(xiàn)過程示例

 更新時間:2023年12月27日 09:30:06   作者:李通  
這篇文章主要為大家介紹了tio-boot框架整合ehcache實現(xiàn)過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

tio-boot整合ehcache

Tio-boot 是一個基于Java的網(wǎng)絡編程框架,用于快速開發(fā)高性能的網(wǎng)絡應用程序。

Ehcache 是一個廣泛使用的開源Java緩存,它可以提高應用程序的性能和擴展性。

整合ecache需要用到jfinal-plugins

添加依賴

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <graalvm.version>23.1.1</graalvm.version>
    <tio.boot.version>1.2.9</tio.boot.version>
    <lombok-version>1.18.30</lombok-version>
    <hotswap-classloader.version>1.2.1</hotswap-classloader.version>
    <final.name>web-hello</final.name>
    <main.class>com.litongjava.tio.web.hello.HelloApp</main.class>
  </properties>
  <dependencies>
    <dependency>
      <groupId>com.litongjava</groupId>
      <artifactId>tio-boot</artifactId>
      <version>${tio.boot.version}</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok-version}</version>
      <optional>true</optional>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.litongjava</groupId>
      <artifactId>hotswap-classloader</artifactId>
      <version>${hotswap-classloader.version}</version>
    </dependency>
    <dependency>
      <groupId>com.litongjava</groupId>
      <artifactId>jfinal-plugins</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>activerecord</artifactId>
      <version>5.1.2</version>
    </dependency>
  </dependencies>

依賴解釋

  • tio-boot是框架核心,
  • jfinal-plugins提供與Ehcache的集成
  • activerecord jfinal-plugins依賴jfinal-plugins

jfinal-plugins依賴如下

cron4j:2.2.5
ehcache-core:2.6.11
jedis:3.6.3
fst:2.57

添加配置文件ehcache.xml

ehcache.xml 是 Ehcache 緩存的配置文件。EcachePlugin啟動時會自動加載這個配置,它定義了緩存的基本屬性和行為。以下是文件中每個部分的詳細解釋:

  • <diskStore>: 指定磁盤存儲的路徑,用于溢出或持久化緩存數(shù)據(jù)到磁盤。
  • <defaultCache>: 設置默認緩存的屬性。這些屬性將應用于未單獨配置的所有緩存。

    • eternal: 設置為 false 表示緩存不是永久的,可以過期。
    • maxElementsInMemory: 內(nèi)存中可以存儲的最大元素數(shù)量。
    • overflowToDisk: 當內(nèi)存中的元素數(shù)量超過最大值時,是否溢出到磁盤。
    • diskPersistent: 是否在JVM重啟之間持久化到磁盤。
    • timeToIdleSeconds: 元素最后一次被訪問后多久會變成空閑狀態(tài)。
    • timeToLiveSeconds: 元素從創(chuàng)建或最后一次更新后多久會過期。
    • memoryStoreEvictionPolicy: 當內(nèi)存達到最大值時,移除元素的策略(例如,LRU表示最近最少使用)。

ehcache.xml配置文件內(nèi)容如下

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
  <diskStore path="java.io.tmpdir/EhCache" />
  <defaultCache eternal="false" maxElementsInMemory="10000" overflowToDisk="false" diskPersistent="false"
    timeToIdleSeconds="1800" timeToLiveSeconds="259200" memoryStoreEvictionPolicy="LRU" />
</ehcache>

EhCachePluginConfig 配置類

這個類是一個配置類,用于初始化和配置 Ehcache 插件。它通過 @Configuration 注解標記為配置類。類中的方法 ehCachePlugin 通過 @Initialization 注解標記為初始化方法。在這個方法中,創(chuàng)建了一個 EhCachePlugin 實例并啟動它。啟動插件意味著 Ehcache 將根據(jù) ehcache.xml 配置文件的設置進行初始化。

package com.litongjava.tio.web.hello.config;
import com.litongjava.jfinal.aop.annotation.Configuration;
import com.litongjava.jfinal.aop.annotation.Initialization;
import com.litongjava.jfinal.plugin.ehcache.EhCachePlugin;
@Configuration
public class EhCachePluginConfig {
  @Initialization
  public void ehCachePlugin() {
    EhCachePlugin ehCachePlugin = new EhCachePlugin();
    ehCachePlugin.start();
  }
}

控制器

  • EhCacheTestController:

    • 這個控制器包含一個方法 test01,用于測試將數(shù)據(jù)添加到 EhCache 緩存中并從中檢索數(shù)據(jù)。
    • 在這個方法中,首先嘗試從緩存中獲取一個鍵值。如果不存在,它將計算一個新值并將其存儲在緩存中。
    • 這個控制器演示了如何使用 Ehcache 存儲和檢索簡單的鍵值對。
  • EhCacheController:

    • 這個控制器包含多個方法,用于與 Ehcache 進行更復雜的交互。
    • 方法如 getCacheNames 和 getAllCacheValue 用于檢索緩存中的信息,例如緩存名稱或所有緩存的值。
    • 其他方法允許按名稱檢索特定緩存的值,或者根據(jù)緩存名稱和鍵檢索特定的值。
    • 這個控制器提供了更深入的視圖,展示了如何管理和檢查 Ehcache 中的數(shù)據(jù)。
package com.litongjava.tio.web.hello.controller;
import com.litongjava.jfinal.plugin.ehcache.CacheKit;
import com.litongjava.tio.http.server.annotation.RequestPath;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@RequestPath("/ecache/test")
public class EhCacheTestController {
  public String test01() {
    String cacheName = "student";
    String cacheKey = "litong";
    String cacheData = CacheKit.get(cacheName, cacheKey);
    if (cacheData == null) {
      String result = "001";
      log.info("計算新的值");
      CacheKit.put(cacheName, cacheKey, result);
    }
    return cacheData;
  }
}

訪問測試 http://localhost/ecache/test/test01

package com.litongjava.tio.web.hello.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.litongjava.jfinal.plugin.ehcache.CacheKit;
import com.litongjava.tio.http.server.annotation.RequestPath;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
@RequestPath("/ecache")
public class EhCacheController {
  public String[] getCacheNames() {
    String[] cacheNames = CacheKit.getCacheManager().getCacheNames();
    return cacheNames;
  }
  public Map<String, Map<String, Object>> getAllCacheValue() {
    CacheManager cacheManager = CacheKit.getCacheManager();
    String[] cacheNames = cacheManager.getCacheNames();
    Map<String, Map<String, Object>> retval = new HashMap<>(cacheNames.length);
    for (String name : cacheNames) {
      Map<String, Object> map = cacheToMap(cacheManager, name);
      retval.put(name, map);
    }
    return retval;
  }
  public Map<String, Object> getCacheValueByCacheName(String cacheName) {
    CacheManager cacheManager = CacheKit.getCacheManager();
    Map<String, Object> retval = cacheToMap(cacheManager, cacheName);
    return retval;
  }
  public Object getCacheValueByCacheNameAndCacheKey(String cacheName, String key) {
    Object object = CacheKit.get(cacheName, key);
    return object;
  }
  private Map<String, Object> cacheToMap(CacheManager cacheManager, String name) {
    Cache cache = cacheManager.getCache(name);
    @SuppressWarnings("unchecked")
    List<String> keys = cache.getKeys();
    Map<String, Object> map = new HashMap<>(keys.size());
    for (String key : keys) {
      Element element = cache.get(key);
      Object value = element.getObjectValue();
      map.put(key, value);
    }
    return map;
  }
}

訪問測試

http://localhost/ecache/getCacheNames

http://localhost/ecache/getAllCacheValue

以上就是tio-boot整合ehcache的詳細內(nèi)容,更多關于tio-boot整合ehcache的資料請關注腳本之家其它相關文章!

相關文章

  • Java Redis Template批量查詢指定鍵值對的實現(xiàn)

    Java Redis Template批量查詢指定鍵值對的實現(xiàn)

    本文主要介紹了Java Redis Template批量查詢指定鍵值對的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 詳解Java中運算符及用法

    詳解Java中運算符及用法

    這篇文章主要介紹了詳解Java中運算符以及相關的用法講解,一起跟著小編學習下吧。
    2017-12-12
  • 優(yōu)惠券優(yōu)惠的思路以及實踐

    優(yōu)惠券優(yōu)惠的思路以及實踐

    本文主要介紹了優(yōu)惠券優(yōu)惠的思路以及實踐。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • java中@EnableAutoConfiguration注解使用

    java中@EnableAutoConfiguration注解使用

    在Spring Boot框架中,@EnableAutoConfiguration是一種非常重要的注解,本文就來介紹一下java中@EnableAutoConfiguration注解使用,感興趣的可以了解一下
    2023-11-11
  • Java實現(xiàn)簡易的分詞器功能

    Java實現(xiàn)簡易的分詞器功能

    搜索功能是具備數(shù)據(jù)庫功能的系統(tǒng)的一大重要特性和功能,生活中常見的搜索功能基本上都具備了分詞搜索功能.然而ES功能固然強大,但對于學生或小項目而言整合起來太費人力物力,若是寫個分詞器就會使項目錦上添花,使其不僅僅是只能單關鍵詞搜索的系統(tǒng),需要的朋友可以參考下
    2021-06-06
  • IDEA中的插件導出或者導入插件方式

    IDEA中的插件導出或者導入插件方式

    在無網(wǎng)絡環(huán)境下安裝IDEA插件,需從已安裝插件的電腦復制插件目錄(路徑:IntelliJIdea2022.1/plugins),粘貼至目標電腦對應位置,打開IDEA設置→從磁盤加載插件→選擇jar包并應用
    2025-09-09
  • SpringMVC中的JSR303與攔截器的使用方法

    SpringMVC中的JSR303與攔截器的使用方法

    JSR303是Java中的一個標準,用于驗證和校驗JavaBean對象的屬性的合法性,本文主要介紹了SpringMVC中的JSR303與攔截器的使用方法,感興趣的可以了解一下
    2023-10-10
  • Java?Web?Axios實現(xiàn)前后端數(shù)據(jù)異步交互實例代碼

    Java?Web?Axios實現(xiàn)前后端數(shù)據(jù)異步交互實例代碼

    Axios作為一個流行的前端?HTTP?通信庫,可以極大地簡化前端與后端之間的數(shù)據(jù)交互,這篇文章主要介紹了Java?Web?Axios實現(xiàn)前后端數(shù)據(jù)異步交互的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • java面向?qū)ο缶幊填惖膬?nèi)聚性分析

    java面向?qū)ο缶幊填惖膬?nèi)聚性分析

    高內(nèi)聚、低耦合是軟件設計中非常關鍵的概念。在面向?qū)ο蟪绦蛟O計中類的劃分時,類的內(nèi)聚性越高,其封裝性越好,越容易復用
    2021-10-10
  • java版微信公眾平臺消息接口應用示例

    java版微信公眾平臺消息接口應用示例

    這篇文章主要介紹了java版微信公眾平臺消息接口應用,結合實例形式對比分析了PHP與java應用微信公眾平臺接口的相關調(diào)用與操作技巧,需要的朋友可以參考下
    2017-07-07

最新評論

肇源县| 长寿区| 邢台市| 宝丰县| 邻水| 泰和县| 康平县| 鄯善县| 定日县| 亚东县| 隆化县| 锦屏县| 仪陇县| 菏泽市| 南漳县| 黄大仙区| 蒲江县| 漳浦县| 新化县| 丽江市| 镇雄县| 丰城市| 平原县| 垣曲县| 宁都县| 永吉县| 将乐县| 井研县| 冷水江市| 开化县| 光山县| 延吉市| 阳原县| 凤翔县| 杭锦旗| 巴塘县| 额尔古纳市| 茶陵县| 新巴尔虎左旗| 潜山县| 遵义市|