springmodules缓存问题请教
DAO接口
interface TestDAO {
find();
}
Test1Impl,Test2Impl实现了TestDAO
业务层通过TestDAO.find调用,根据不同的业务注入相应的Test1Impl或者Test2Impl。
问题来了
//这个缓存部分配置片段,可以说明问题了,如果如下配置
<bean id="cachingInterceptor"
class="org.springmodules.cache.interceptor.caching.MethodMapCachingInterceptor">
<property name="cacheProviderFacade" ref="cacheProviderFacade" />
<property name="cachingModels">
<props>
<prop key="test.TestDAO.find*">cacheName=systemCache</prop>
</props>
</property>
</bean>
缓存有效,但有问题就是比如第一次是注入Test1Impl,结果被缓存,第二次是注入Test2Impl,ehcache无法分辨没有执行查询,就返回的缓存结果,显然是错误的。
但如果如下配置
<bean id="cachingInterceptor"
class="org.springmodules.cache.interceptor.caching.MethodMapCachingInterceptor">
<property name="cacheProviderFacade" ref="cacheProviderFacade" />
<property name="cachingModels">
<props>
<prop key="test.Test1Impl.find*">cacheName=systemCache</prop>
<prop key="test.Test2Impl.find*">cacheName=systemCache</prop>
</props>
</property>
</bean>
缓存就失败,因为声明是Test1Impl.find 而调用是TestDAO.find
//////////////
如果声明为两个接口可以解决此问题,但不够优雅。请问基于上面的模式只声明一个接口,但有多个实现,怎么配置缓存配置文件。望专家不吝赐教。