<beans xmlns=""
xmlns:xsi="" xmlns:cache=""
xmlns:p=""
xsi:schemaLocation="
">
<!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 -->
<cache:annotation-driven cache-manager="cacheManager" />
<bean />
<!-- generic cache manager -->
<bean>
<property>
<set>
<bean
p:name="userCache" />
</set>
</property>
</bean>
</beans>5.运行类
package org.springframework.cache.demo.mycache;
import org.springframework.cache.demo.User;
import org.springframework.cache.demo.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyMain {
@SuppressWarnings("resource")
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-cache-mycache.xml");
UserService userService = context.getBean(UserService.class);
// 第一次查询,应该走数据库
System.out.print("第一次查询...");
userService.getUserByName("hello");
// 第二次查询,应该不查数据库,直接返回缓存的值
System.out.println("第二次查询...");
userService.getUserByName("hello");
System.out.println();
System.out.println("==============");
// 更新某个记录的缓存,首先构造两个用户记录,然后记录到缓存中
User user1 = userService.getUserByName("user1");
// 开始更新其中一个
user1.setId(1000);
userService.updateUser(user1);
// 因为被更新了,所以会查询数据库
userService.getUserByName("user1");
// 再次查询,应该走缓存
userService.getUserByName("user1");
// 更新所有缓存
userService.reload();
System.out.println("清楚所有缓存");
// 查询数据库
userService.getUserByName("user1");
userService.getUserByName("user2");
// 查询缓存
userService.getUserByName("user1");
userService.getUserByName("user2");
}
}
运行结果:
第一次查询...查询数据库...hello
第二次查询...
==============
查询数据库...user1
更新数据库数据...user1
清楚所有缓存
查询数据库...user1
查询数据库...user2