相关疑难解决方法(0)

Spring @Transactional属性是否适用于私有方法?

如果我在Spring bean中的私有方法上有@Transactional -annotation,那么注释是否有效?

如果@Transactional注释是在公共方法上,则它可以工作并打开事务.

public class Bean {
  public void doStuff() {
     doPrivateStuff();
  }
  @Transactional
  private void doPrivateStuff() {

  }
}

...

Bean bean = (Bean)appContext.getBean("bean");
bean.doStuff();
Run Code Online (Sandbox Code Playgroud)

java spring annotations transactions

184
推荐指数
6
解决办法
10万
查看次数

Spring @Cacheable没有缓存

使用Spring 3.2和EhCache 2.9.我注释了一个零参数方法如下:

@Cacheable(value="myList", key="#result.method.name")
protected List<MyObject> getMyList() {
   //db query
   //return list of results
}
Run Code Online (Sandbox Code Playgroud)

EhCache配置:

<cache name="myList"
    statistics="true"
    maxEntriesLocalHeap="1"     
    timeToLiveSeconds="3600">
    <persistence strategy="none" />
</cache> 
Run Code Online (Sandbox Code Playgroud)

我想要缓存数据库结果.由于此方法没有参数,因此我选择了方法名称作为缓存键.

当我测试这个时,每个方法调用都会遇到数据库,我不知道为什么.有任何想法吗?


UPDATE

因此在排除故障后我发现了一些有趣 目前,getMyList定义高速缓存的方法与调用它的方法相同.该方法基本上调用DAO来查询列表.如果我getMyList向外移动到另一个只充当代理的类,然后我改变原始调用者来代替调用这个新代理,那么缓存就可以了.我无法解释原因.有什么输入?

spring caching ehcache

3
推荐指数
3
解决办法
7709
查看次数

标签 统计

spring ×2

annotations ×1

caching ×1

ehcache ×1

java ×1

transactions ×1