Spring+ehcache配置的一个缓存。
缓存做在DAO层,因为之前在一个方法里面配置过一个缓存,并且没有什么问题。
这次应该说相对简单,但是从dao的日志里面却每次看到那本不该出现的sql输出。
说明没有缓存查询结果!
二个方法基本上一样,配置也一样,唯一的不同是方法的传入参数:
一个是String,另外一个是DO
问题出现在这个DO上面,把DO改成promDO.getPromId()后一切OK。
ehcache应该是根据每次判断入参是否相等来选择是否从缓存取数据。
== 还是.equals?
缓存做在DAO层,因为之前在一个方法里面配置过一个缓存,并且没有什么问题。
这次应该说相对简单,但是从dao的日志里面却每次看到那本不该出现的sql输出。
说明没有缓存查询结果!
二个方法基本上一样,配置也一样,唯一的不同是方法的传入参数:
一个是String,另外一个是DO
public viod query1(String promId);
public viod query2(PromDO promDO);问题出现在这个DO上面,把DO改成promDO.getPromId()后一切OK。
ehcache应该是根据每次判断入参是否相等来选择是否从缓存取数据。
== 还是.equals?
本文探讨了在使用Spring+ehcache配置缓存时遇到的问题。通过对比两个几乎相同的方法,发现当方法参数类型为自定义对象时,缓存未能正常工作。经过调试发现,将对象参数替换为其内部ID字段后,缓存开始生效。
21万+

被折叠的 条评论
为什么被折叠?



