使用ehcache时,我注意到@Cacheable注释可以在类declaration或方法declaration之上使用,例如;
可缓存类:
@Cacheable
class CacheableClass{
Long l;
Integer i;
String s;
}
可缓存方法:
class ...
@Cacheable
public List<ToBeCached> 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注释。
使用ehacache-Spring注解:
@com。谷歌代码。ehcache。注释。Cacheable(cacheName=“test”)如果我们在类型级别给出这个值,那么它会给出一个错误,表示该位置不允许使用@Cacheable注释。
根据我读过的文件注释位置:
Spring建议只使用@Cacheable注释对具体类的方法进行注释,而不是对接口的方法进行注释。
使用代理时,应仅将@Cacheable注释应用于具有公共可见性的方法。如果使用@Cacheable注释注释受保护、私有或包可见的方法,则不会产生错误,但注释的方法不显示配置的可缓存设置。
使用Spring缓存
如果您使用@org.springframework.cache.annotation.缓存(value="test"),其中值表示缓存的名称。您可以在类型
你可以试试这个
@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() {}
}
如果你没有得到错误,那么我必须更新自己。
问题内容: 两者都意味着空间,但是有什么区别吗? 问题答案: 一个是不间断空间,另一个是常规空间。不间断的空格表示该行不应在该点处换行,就像它不会在一个单词的中间换行一样。 此外,正如斯文德(Svend)在其评论中指出的那样,不间断的空间不会崩溃。
本文向大家介绍<%# %> 和 <% %> 有什么区别?相关面试题,主要包含被问及<%# %> 和 <% %> 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 答:<%# %>表示绑定的数据源 <%%>是服务器端代码块
问题内容: 它们都在释放鼠标按钮后被举起一次,并且都可以在JRadioButton上获得所有可用的信息,对吗?有什么区别吗? 问题答案: 一个,就会通知当过按钮的状态改变时,用户是否通过与按钮(通过相互作用或编程方法)。 另一方面,当用户与按钮互动时会被调用(但可以通过方法进行编程模拟)。 请注意,与按钮交互(例如单击或击中空格键)的用户也将更改按钮的状态,并引发项目事件和动作事件。通常,您将要定
问题内容: 我意识到我一直在使用的功能是它的别名,而从中导入将使它变得黯然失色。 通过模块和模块打开文件有什么区别? 问题答案: 是文件I / O的首选高级接口。它将OS级文件描述符包装在一个对象中,您可以使用该对象以Python方式访问文件。 只是较低级POSIX syscall的包装。它使用更少的符号(和更多POSIX-y)参数,并返回代表打开文件的文件描述符(一个数字)。它并 没有 返回一个
问题内容: 以下代码之间有什么区别: 和 Python建议采用一种做事方式,但有时似乎不止一种。 问题答案: 一个是函数调用,一个是文字: 使用第二种形式。它更具Python风格,并且可能更快(因为它不涉及加载和调用单独的函数)。