Spring4 注解方式开启缓存

来源:互联网 发布:网络的好处与坏处 编辑:程序博客网 时间:2024/06/03 06:59

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

ehcache.xml

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


单独开启ehcache 或 redis

@Configuration@EnableCachingpublic 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
原创粉丝点击