Spring4 注解方式开启缓存

可以采用单缓存 或者 多缓存

ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
	<cache name="spittleCache" maxBytesLocalHeap="50m" timeToLiveSeconds="100"></cache>
</ehcache>


单独开启ehcache 或 redis

@Configuration
@EnableCaching
public class CachingCinfig {

//    @Bean
//    public CacheManager cacheManager(){
//        return new ConcurrentMapCacheManager();
//    }
    
    
    /**
     * EhCache 缓存管理器    
     * @author dong.tl 
     * @date 2017年4月21日 下午2:05:20  
     * @param cm
     * @return 
     */  
//    @Bean
//    public EhCacheCacheManager cacheManager(CacheManager cm) {
//        return new EhCacheCacheManager(cm);
//    }
    
    @Bean
    public EhCacheManagerFactoryBean ehcache() {
        EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
        ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("eache/ehcache.xml"));
        return ehCacheManagerFactoryBean;
    }
    
    
    /**
     * 配置redis缓存管理器    
     * @author dong.tl 
     * @date 2017年4月21日 下午2:04:23  
     * @param redisTemplate
     * @return 
     */  
//    @Bean
//    public org.springframework.cache.CacheManager cacheManager(RedisTemplate<String, String> redisTemplate){
//        return new RedisCacheManager(redisTemplate);
//    }
    
    /**
     * 多缓存管理器    
     * @author dong.tl 
     * @date 2017年4月21日 下午2:15:57  
     * @param ecm
     * @param redisTemplate 需要先实习RedisTemplate Bean
     * @return 
     */  
    @Bean
    public org.springframework.cache.CacheManager cacheManager(CacheManager ecm,RedisTemplate<String, String> redisTemplate){
        CompositeCacheManager cacheManager = new CompositeCacheManager();
        List<org.springframework.cache.CacheManager> managers = new ArrayList<>();
        managers.add(new EhCacheCacheManager(ecm));
        managers.add(new RedisCacheManager(redisTemplate));
        cacheManager.setCacheManagers(managers);
        return cacheManager;
        
    }

}


几个注意常用的缓存注解

@Cacheable 首先在缓存中查找,如果没有则执行方法,将方法的返回值存入缓存中

@CachePut 方法始终会被执行 人后将返回值放入缓存中

@CachEvict 删除缓存


    @PersistenceContext
    private EntityManager entityManager;

    @Override
    @CachePut(value="spottleCache",key="#result.id")
    public void add(Spittr spittr) {
//        entityManager.createNativeQuery ("insert into spittr values(" + spittr.getId() + ",'" + spittr.getName() + "')")
//                .executeUpdate();
        entityManager.persist(spittr);
    }

    @Override
    @Cacheable("spittleCache")
    public Spittr findMyOne(int id) {
        System.out.println("查找了");
        return entityManager.find(Spittr.class, id);
    }




 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love13135816

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值