当前位置: 首页 > 知识库问答 >
问题:

ehcache上@Cacheable Method和@Cacheable Class有什么区别

郑俊材
2023-03-14

使用ehcache时,我注意到@Cacheable注释可以在类declaration或方法declaration之上使用,例如;

可缓存类:

@Cacheable
class CacheableClass{
    Long l;
    Integer i;
    String s;


}

可缓存方法:

    class ...
            @Cacheable
            public List<ToBeCached> getCacheableClassList()
            {
                    ...
            }

如果@Cacheable位于一个类的顶部,那么您就不能给出chache的名称,但是如果您在一个方法的顶部声明,那么您可以给出在配置xml中声明的缓存的名称。我想我错过了一些东西,因为使用@Cacheable进行类删除对我来说似乎太难了。

共有2个答案

司徒兴德
2023-03-14

在方法级别使用@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注释。

甘兴学
2023-03-14

使用ehacache-Spring注解:

@com。谷歌代码。ehcache。注释。Cacheable(cacheName=“test”)如果我们在类型级别给出这个值,那么它会给出一个错误,表示该位置不允许使用@Cacheable注释。

根据我读过的文件注释位置:

  1. 在方法上。
  2. 在界面上或者
  3. on a public方法on a class

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风格,并且可能更快(因为它不涉及加载和调用单独的函数)。