Spring缓存配置遇到的坑
基本配置
<cache:annotation-driven cache-manager="cacheManager"/>
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="default"/>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="books"/>
</set>
</property>
</bean>
遇到的问题:
1. 没有缓存,每一次都是跑进方法里面。
我怀疑是不是@Cacheable没有被扫描得到?
后来我就在xml里手动写了一个配置<bean id="testdd" class="cn.angelshelter.fm2017.service.TestCacheService"></bean>,后来发现能认别了。666
因为我的项目有两个配置文件,一个是springmvc-servlet.xml,另一个是applicationContext.xml,
springmvc-servlet.xml里面有 <context:component-scan base-package="cn.angelshelter" />,而applicationContext.xml里面没有 <context:component-scan base-package="cn.angelshelter" />,好像就是这个原因,所以applicationContext.xml里面都不会自己去扫描。
后来,我把文章开头提到的两段配置移到springmvc-servlet.xml就可以正常扫描了。
后为,我发现,其实只有把<cache:annotation-driven cache-manager="cacheManager"/> 移到springmvc-servlet.xml,另一部分保留在applicationContext.xml也是可以自动扫描到的。
这个可能是可spring配置文件的作用域有关吧,我反正不太懂。
2. 与元素类型 "bean" 相关联的属性 "p:name" 的前缀 "p" 未绑定。
不支持前辍p:, 加上 xmlns:p="http://www.springframework.org/schema/p" 就好了。
或者你就不使用p:格式,把<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="default"/>换成
<bean name="default" class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" />也可以。
3. 缓存配置@Cacheable(value="books")中的value的值,一定是要存在的,就是放在<bean id="cacheManager">的caches属性set集合中有定义,比如上面定义的default和books
今天试了一下ehcache的集群(分布式)配置(RMI方式),2017-03-16
这个家伙讲得很具体,我就不多赘言了,直接上链接http://www.tuicool.com/articles/MJzYZbR
Spring缓存配置遇到的坑的更多相关文章
- 记录一个 spring cloud 配置中心的坑,命令行端口参数无效,被覆盖,编码集问题无法读取文件等.
spring cloud 配置中心 结合GIT , 可以运行时更新配置文件.发送指令让应用重新读取配置文件. 最近在测试服务器实现了一套,结果CPU 实用率暴增,使用docker compose启动 ...
- spring零配置AOP踩坑指南
今天照着书,试着配了AOP(全注解),结果踩了各种坑,后来参考书附带的源码,终于走出来了,现在总结一下 除了spring的jar包以外,还需要导入以下包: 1.Spring核心配置文件beans.xm ...
- 【Java EE 学习 78 上】【数据采集系统第十天】【Service使用Spring缓存模块】
一.需求分析 调查问卷中或许每一个单击动作都会引发大量的数据库访问,特别是在参与调查的过程中,只是单击“上一页”或者“下一页”的按钮就会引发大量的查询,必须对这种问题进行优化才行.使用缓存策略进行查询 ...
- Spring缓存框架原理浅谈
运维在上线,无聊写博客.最近看了下Spring的缓存框架,这里写一下 1.Spring 缓存框架 原理浅谈 2.Spring 缓存框架 注解使用说明 3.Spring 缓存配置 + Ehcache(默 ...
- 8 -- 深入使用Spring -- 5...1 启用Spring缓存
8.5.1 启用Spring缓存 Spring配置文件专门为缓存提供了一个cache:命名空间,为了启用Spring缓存,需要在配置文件中导入cache:命名空间. 导入cache:命名空间之后,启用 ...
- Spring缓存机制(转)
Spring的缓存机制非常灵活,可以对容器中任意Bean或者Bean的方法进行缓存,因此这种缓存机制可以在JavaEE应用的任何层次上进行缓存. Spring缓存底层也是需要借助其他缓存工具来实现,例 ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
- 在 JPA、Hibernate 和 Spring 中配置 Ehcache 缓存
jpa, hibernate 和 spring 时配置 ehcache 二级缓存的步骤. 缓存配置 首先在 persistence.xml 配置文件中添加下面内容: <property name ...
- spring boot 2.0.4 Redis缓存配置
spring boot 2 使用RedisTemplate操作redis存取对象时,需要先进行序列化操作 import org.springframework.cache.CacheManager; ...
随机推荐
- PyQt5系列教程(八)定时器QTimer的使用
软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 前言 如果需要在程序中周期性地进行某项操作,比如检测某种设备的状态,就会用到定时器.本文就来看看PyQT5中 ...
- oracle一个用户操作多个表空间中表的问题
首先,授权给指定用户. 一个用户的默认表空间只能有一个,但是你可以试下用下面的语句为其授权在别的表空间中创建对像: alter user username quota 0||unlimited on ...
- 13.mysql基本查询
1. 给表起个别名:但是,前面的也是需要进行修改的,否则会报错的: select * from s.name from students as s; 2. 为字段起别名 select s,name a ...
- 29. 在Linux上使用unzip解压以默认编码解压,中文文件名会出现乱码
解决办法: 下载p7zip-9.13-1.el5.rf.x86_64.rpm和p7zip-plugins-9.13-1.el5.rf.x86_64.rpm包 用以下方法安装后,使用7z x filen ...
- ant 注意
nt文件在部署时,如果控制台出现乱码则需要调整语言. 高版本eclipse在jdk高版本中已经植入了ant的部署.因此不需要单独配置ant.jar. 如果版本低,可下载ant插件,或者下载ant的工具 ...
- unity Object-c交互
一.unity 调用 Object-c C/C++可以直接与Object-c交互,只要把文件后缀.m直接改成.mm,成为C/C++与Object-c混编文件.C#又可以调用C/C++方法,所以C#就是 ...
- conflicting types for ‘方法名’ 的错误
将main()的实现写在drawShapes(),drawCircle(),drawRectangle()...之前. 结果编译的时候出现了 conflicting types for " ...
- 2018 Jar_Feb_Newwords
检测钩子程序 开发一个检测钩子程序的工具 - 豆丁网http://www.docin.com/p-1363993661.html pdf掺杂病毒的方法 Java的:xml文件中跳过的二进制数据在解析 ...
- 【完结汇总】iKcamp出品基于Koa2搭建Node.js实战共十一堂课(含视频)
- 刚刚安装完nginx,服务启动,通过浏览器无法访问的问题
查看Linux服务是否启动. ps -ef | grep nginx 解决办法:1,添加 80 段端口配置 firewall-cmd --zone=public --add-port=80/tcp - ...