2.1.使用缓存
2023-07-03 16:49 更新
BDF2默认使用的是ehcache实现的缓存功能,对于我们的应用来说,同样可以使用BDF2提供的缓存功能来缓存需要业务数据,从而降低访问数据频率,减轻数据库服务器压力。要在业务当中使用BDF2中的缓存工具类,我们只需要获取BDF2当中提供的ApplicationCache接口的实现类实例就行,因为这个接口默认配置在Spring当中,所以如果您的业务类也配置在Spring当中,那么只需要注入ApplicationCache接口实现类的bean即可,ApplicationCache接口实现类的bean id为“bdf2.applicationCache”;如果需要在一个非Springbean的业务类中获取这个接口实现类的bean,可以通过下面的代码实现:
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";
/**
* 根据指定的key,从缓存当中获取一个对象
* @param key 缓存当中对象的key值
* @return 返回缓存当中与给定key对应的对象值,如果对象不存在,就返回null
*/
Object getCacheObject(String key);
/**
* 从临时缓存当中获取一个被临时缓存对象,<br>
* 默认情况下,位于临时缓存中对象生命周期为1800秒,也就是半小时
* @param key 缓存当中对象的key值
* @return 返回缓存当中与给定key对应的对象值,如果对象不存在,就返回null
*/
Object getTemporaryCacheObject(String key);
/**
* 将一个对象放入缓存当中,同时如果缓存当中有存在相同key的对象,则进行覆盖
* @param key 对象的key
* @param obj 具体对象
*/
void putCacheObject(String key, Object obj);
/**
* 将一个对象放入临时缓存当中,同时如果缓存当中有存在相同key的对象,则进行覆盖,<br>
* 默认情况下,位于临时缓存中对象生命周期为1800秒,也就是半小时
* @param key 对象的key
* @param obj 具体对象
*/
void putTemporaryCacheObject(String key, Object obj);
/**
* 从缓存当中移除一个对象
* @param key 要移除的对象的key值
*/
void removeCacheObject(String key);
/**
* 从临时缓存当中移除一个对象
* @param key 要移除的对象的key值
*/
void removeTemporaryCacheObject(String key);
}
接口方法都有注释,且比较简单,这里就不再进一步介绍了。在实际应用当中,如果我们采用BDF2做的项目需要部署到集群环境下,那么就需要我们项目当中采用的缓存能支持集群,对于BDF2当中的Ehcache来说,默认我们已经添加了对Ehcache Terracotta Server的支持(Terracotta是一款分布式缓存服务器,详细信息点击此处了解),我们需要做就是在WEB-INF\dorado-home\configure.properties文件当中添加名为bdf2.terracottaServer参数,指定Terracotta Server所在的IP即可(多个用逗号分隔),这样就可以借助Terracotta Server,实现分布式缓存。
实际上,对于分布式缓存,除了使用Terracotta Server外,我们还可以使用Memcached,Memcached也是一款开源的分布式缓存服务器,具体点击此处了解,听说其功能很强大,有兴趣的程序员可以试用一下。如果我们想实现Memcached来作为我们的分布式缓存服务器,那么也比较简单,方法就是利用Memcached实现BDF2当中的ApplicationCache接口,并将其配置到Spring当中,并且配置时,Spring的beanid为“bdf2.applicationCache”,这样就可以覆盖BDF2提供的ApplicationCache接口的默认实现类了。
以上内容是否对您有帮助:
更多建议: