正文
缓存配置
该项目全部基于JavaConfig,除
enchache.xml
,@EnableCaching注解的意思和
cache:annotation-diver
的工作方式是相同的。它会都会创建一个切面并触发Spring缓存注解的切点。还有一点需要注意的是
EhCacheCacheManager
管理器。还有SimpleCacheManager,ConcurrentMapCacheManager.Spring Data又提供了RedisCacheManager.具体请看《Spring实战》,这本书非常不错,直接再次推荐。
@Configuration
@EnableCaching
public class EhCacheConfig {
@Bean
public EhCacheCacheManager cacheManager(CacheManager cacheManager) {
return new EhCacheCacheManager(cacheManager);
}
@Bean
public EhCacheManagerFactoryBean ehcache() {
EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
return ehCacheManagerFactoryBean;
}
}
1、利用Ehcache框架对经常调用的查询进行缓存,从而提高系统性能。还是先看接口定义,需要注意的是get()方法使用了泛型.
public interface ICache {
void put(String cacheName, Object key, Object value);
<T> T get(String cacheName, Object key);
@SuppressWarnings("rawtypes")
List getKeys(String cacheName);
void remove(String cacheName, Object key);
void removeAll(String cacheName);
<T> T get(String cacheName, Object key, ILoader iLoader);
<T> T get(String cacheName, Object key, Class<? extends ILoader> iLoaderClass);
}
--------------------------------------------------------------------------------
public interface ILoader {
Object load();
}
抽象类
接下来看下基础CacheFactory,注意,这里定义成抽象的。因为抽象类天生就是用来被继承的。
那什么时候使用抽象类和接口呢:
-
1、如果你拥有一些方法想让他们中的一些默认实现,那么使用抽象类。
-
2、如果你想实现多重继承,那么你必须使用接口。由于java不支多继承,子类不能够继承多个类,但可以实现多个接口
-
3、如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口 ,那么就需要改变所有实现了该接口的类。
public