Java 什么';这是ehcache上@Cacheable方法和@Cacheable类之间的区别
使用ehcache时,我注意到@Cacheable注释可以在类declaration或方法declaration之上使用,例如 可缓存类:Java 什么';这是ehcache上@Cacheable方法和@Cacheable类之间的区别,java,spring,hibernate,ehcache,Java,Spring,Hibernate,Ehcache,使用ehcache时,我注意到@Cacheable注释可以在类declaration或方法declaration之上使用,例如 可缓存类: @Cacheable class CacheableClass{ Long l; Integer i; String s; } 可缓存方法: class ... @Cacheable public List<ToBeCached> getCacheableCla
@Cacheable
class CacheableClass{
Long l;
Integer i;
String s;
}
可缓存方法:
class ...
@Cacheable
public List<ToBeCached> getCacheableClassList()
{
...
}
类。。。
@可缓存
公共列表getCacheableClassList()
{
...
}
如果@Cacheable位于一个类的顶部,那么您就不能给出chache的名称,但是如果您在一个方法的顶部声明,那么您可以给出在配置xml中声明的缓存的名称。我想我错过了一些东西,因为使用@Cacheable进行类删除对我来说似乎太难了。在方法级别使用@Cacheable意味着,方法的结果会被缓存。 在接口级别使用@Cacheable用于定义自定义注释,如下所示: //自定义注释
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Cacheable(value="books", key="#isbn")
public @interface SlowService {
}
下面的代码
@Cacheable(value="books", key="#isbn")
public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)
可以替换为
@SlowService
public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)
但我从未见过在类级别应用@Cacheable注释。使用ehcache-spring注释: @com.googlecode.ehcache.annotations.Cacheable(cacheName=“test”)如果我们在类型级别给出这个值,那么它会给出一个错误,说明这个位置不允许使用注释@Cacheable 根据我读过的文档注释位置:
@com.googlecode.ehcache.annotations.Cacheable(cacheName = "test")
@org.springframework.cache.annotation.Cacheable(value="")
public class PortalDatabaseAdapterImpl{
@com.googlecode.ehcache.annotations.Cacheable(cacheName="test")
@org.springframework.cache.annotation.Cacheable(value="test")
public List<PageControl> getLoginPage() {}
}
@com.googlecode.ehcache.annotations.Cacheable(cacheName=“test”)
@org.springframework.cache.annotation.Cacheable(value=”“)
公共类PortalDatabaseAdapterImpl{
@com.googlecode.ehcache.annotations.Cacheable(cacheName=“test”)
@org.springframework.cache.annotation.Cacheable(value=“test”)
公共列表getLoginPage(){}
}
如果您没有收到错误,那么我必须更新自己。我不清楚上面的代码(findBook方法)的作用。它是否也从缓存中提取?假设预先缓存了这本书,并调用了findBook方法,它应该返回这本书。它是否直接返回book而不是运行方法?或者只是缓存返回值?哪个@Cacheable u r使用-javax、spring缓存或任何其他第三方缓存?是的,你说得对,对于类@Cacheable来自hibernate。。。这令人恼火,令人困惑。那怎么办?还有什么区别?