spring cache简单使用

来源:互联网 发布:二叉树 treenode java 编辑:程序博客网 时间:2024/05/22 06:56

spring从3.1起自带了cache功能。可以缓存一个方法的返回值,也就是说如果有缓存,spring就会直接使用缓存值,而不会再去执行这个方法;

cashe相关的功能是在spring-context.4.2.5.RELEASE.jar这个jar包中的。

 在applicationContext.xml中首先加入相关schemaLocation.

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:cache="http://www.springframework.org/schema/cache"xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-4.1.xsd   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsdhttp://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvc    http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd    http://www.springframework.org/schema/cache    http://www.springframework.org/schema/cache/spring-cache-4.1.xsd    "></beans>
然后,开启cache注解,配置cacheManager:

<!-- 启用缓存注解功能(请将其配置在Spring主配置文件中) --><cache:annotation-driven /><!-- Spring自己的基于java.util.concurrent.ConcurrentHashMap实现的缓存管理器(该功能是从Spring3.1开始提供的) --><bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"><property name="caches"><set><bean name="getUserById"class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" /></set></property></bean>

在service中使用@Cacheable注解:

@Servicepublic class UserService {@Autowired UserDaoImpl userDaoImpl;@Cacheable(value="getUserById", key="#id")public User getUserById(int id){System.out.println("执行getUserById");return userDaoImpl.getUserById(id); }}
第一次调用getUserById方法会打印"执行getUserById",第二次调用不会打印。重启服务后缓存会被清空,因为是存在内存里的。



0 0