读文前提:对springmvc有一定的使用了解,能够写一个从页面输入地址到后台读取数据的功能(不能就跳过本文,百度其他文章)。
写过一些代码,对于缓存常常听说,却不是很了解,所以做个笔记。
缓存,把访问读取的东西放到缓存中,后面访问的时候,直接读取缓存,提高访问效率。
到这里,会提出几个问题
1.缓存在哪里
2.什么东西要放入缓存
3.怎么放入缓存中
4.怎么知道访问了缓存
带着这些问题,我们在项目(新建或者在已有项目中添加)中添加下面的代码。重点在于缓存注解的使用
controller中写一个方法,
@Resource
private IHpCacheService hpSrv;
@RequestMapping(value = "/getSomething",produces = {"text/html;charset=UTF-8"})
@ResponseBody
public String getSomething(){
String res = hpSrv.getSomething();
return res;
}
调用service方法,service写完方法实现之后为其加缓存注解
@Service("hpCacheService")
public class hpCacheServiceImpl implements IHpCacheService {
@Override
//缓存注解
@Cacheable(value = "default")
public String getSomething() {
System.out.println("没有调用缓存,所以你看到了我");
return "ss";
}
}
springmvc的配置文件中配置缓存
<!--缓存 start-->
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean">
<property name="name" value="default"/>
</bean>
</set>
</property>
</bean>
<!-- 支持缓存注解 -->
<cache:annotation-driven cache-manager="cacheManager" />
<!--缓存 end-->
运行项目,输入地址http://localhost:8080/*/getSomething 进行访问
第一次会在页面看到返回结果,在控制台看到输出:没有调用缓存,所以你看到了我
刷新一下,再看控制台会发现没有这句话,但是页面还是有相同的返回结果。
分析结果:第一次的页面显示结果说明我们方法调用成功了,控制台打印出的说明访问了这个方法,第二次页面显示我们依旧访问成功,控制台没打印出提示(没有调用缓存,所以你看到了我)是因为使用了缓存注解,在第一次访问之后把它放在了缓存中,第二次访问的是缓存,不是方法,所以页面成功,控制台没有打印提示。
问:
1.缓存在哪里
2.什么东西要放入缓存
3.怎么放入缓存中
4.怎么知道访问了缓存
答:
一二问题看官方关于缓存的具体解释。
问题三:springmvc通过注解自动放入缓存,
问题四:文章中模拟的就是缓存访问的情景。
文章没有什么营养,写下来是为了学习cache的一个过渡,旨在使用通俗易懂的对话来入门学习,有了这样的轮廓,就应该去看这篇文章学习细节。https://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/