专栏名称: Guo_1_9
目录
相关文章推荐
51好读  ›  专栏  ›  Guo_1_9

基于SpringBoot的后台管理系统(Enchache配置、全局异常处理(重点))(四)

Guo_1_9  · 掘金  ·  · 2018-03-05 10:22

正文

请到「今天看啥」查看全文


缓存配置

该项目全部基于JavaConfig,除 enchache.xml ,@EnableCaching注解的意思和 cache:annotation-diver 的工作方式是相同的。它会都会创建一个切面并触发Spring缓存注解的切点。还有一点需要注意的是 EhCacheCacheManager 管理器。还有SimpleCacheManager,ConcurrentMapCacheManager.Spring Data又提供了RedisCacheManager.具体请看《Spring实战》,这本书非常不错,直接再次推荐。

/**
 * ehcache配置
 */
@Configuration
@EnableCaching
public class EhCacheConfig {

    /**
     * EhCache的配置
     */
    @Bean
    public EhCacheCacheManager cacheManager(CacheManager cacheManager) {
        return new EhCacheCacheManager(cacheManager);
    }

    /**
     * EhCache的配置
     */
    @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






请到「今天看啥」查看全文