2.1.使用緩存

2023-07-03 16:49 更新
BDF2默認(rèn)使用的是ehcache實現(xiàn)的緩存功能,對于我們的應(yīng)用來說,同樣可以使用BDF2提供的緩存功能來緩存需要業(yè)務(wù)數(shù)據(jù),從而降低訪問數(shù)據(jù)頻率,減輕數(shù)據(jù)庫服務(wù)器壓力。要在業(yè)務(wù)當(dāng)中使用BDF2中的緩存工具類,我們只需要獲取BDF2當(dāng)中提供的ApplicationCache接口的實現(xiàn)類實例就行,因為這個接口默認(rèn)配置在Spring當(dāng)中,所以如果您的業(yè)務(wù)類也配置在Spring當(dāng)中,那么只需要注入ApplicationCache接口實現(xiàn)類的bean即可,ApplicationCache接口實現(xiàn)類的bean id為“bdf2.applicationCache”;如果需要在一個非Springbean的業(yè)務(wù)類中獲取這個接口實現(xiàn)類的bean,可以通過下面的代碼實現(xiàn):

ApplicationCache applicationCache=ContextHolder.getBean(ApplicationCache.BEAN_ID);
ApplicationCache接口源碼如下:
package com.bstek.bdf2.core.cache;
/**
 * @author Jacky.gao
 * @since 2013-5-21
 */
public interface ApplicationCache {
 public static final String BEAN_ID = "bdf2.applicationCache";
 /**
 * 根據(jù)指定的key,從緩存當(dāng)中獲取一個對象
 * @param key 緩存當(dāng)中對象的key值
 * @return 返回緩存當(dāng)中與給定key對應(yīng)的對象值,如果對象不存在,就返回null
 */
 Object getCacheObject(String key);
 /**
 * 從臨時緩存當(dāng)中獲取一個被臨時緩存對象,<br>
 * 默認(rèn)情況下,位于臨時緩存中對象生命周期為1800秒,也就是半小時
 * @param key 緩存當(dāng)中對象的key值
 * @return 返回緩存當(dāng)中與給定key對應(yīng)的對象值,如果對象不存在,就返回null
 */
 Object getTemporaryCacheObject(String key);
 /**
 * 將一個對象放入緩存當(dāng)中,同時如果緩存當(dāng)中有存在相同key的對象,則進行覆蓋
 * @param key 對象的key
 * @param obj 具體對象
 */
 void putCacheObject(String key, Object obj);
 /**
 * 將一個對象放入臨時緩存當(dāng)中,同時如果緩存當(dāng)中有存在相同key的對象,則進行覆蓋,<br>
 * 默認(rèn)情況下,位于臨時緩存中對象生命周期為1800秒,也就是半小時
 * @param key 對象的key
 * @param obj 具體對象
 */
 void putTemporaryCacheObject(String key, Object obj);
 /**
 * 從緩存當(dāng)中移除一個對象
 * @param key 要移除的對象的key值
 */
 void removeCacheObject(String key);
 /**
 * 從臨時緩存當(dāng)中移除一個對象
 * @param key 要移除的對象的key值
 */
 void removeTemporaryCacheObject(String key);
}
接口方法都有注釋,且比較簡單,這里就不再進一步介紹了。在實際應(yīng)用當(dāng)中,如果我們采用BDF2做的項目需要部署到集群環(huán)境下,那么就需要我們項目當(dāng)中采用的緩存能支持集群,對于BDF2當(dāng)中的Ehcache來說,默認(rèn)我們已經(jīng)添加了對Ehcache Terracotta Server的支持(Terracotta是一款分布式緩存服務(wù)器,詳細(xì)信息點擊此處了解),我們需要做就是在WEB-INF\dorado-home\configure.properties文件當(dāng)中添加名為bdf2.terracottaServer參數(shù),指定Terracotta Server所在的IP即可(多個用逗號分隔),這樣就可以借助Terracotta Server,實現(xiàn)分布式緩存。

實際上,對于分布式緩存,除了使用Terracotta Server外,我們還可以使用Memcached,Memcached也是一款開源的分布式緩存服務(wù)器,具體點擊此處了解,聽說其功能很強大,有興趣的程序員可以試用一下。如果我們想實現(xiàn)Memcached來作為我們的分布式緩存服務(wù)器,那么也比較簡單,方法就是利用Memcached實現(xiàn)BDF2當(dāng)中的ApplicationCache接口,并將其配置到Spring當(dāng)中,并且配置時,Spring的beanid為“bdf2.applicationCache”,這樣就可以覆蓋BDF2提供的ApplicationCache接口的默認(rèn)實現(xiàn)類了。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號