Spring Cache缓存介绍(3)

<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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15012.html