2009-07-28 126 views
1

如果我有一堆DAO的一堆getXXX方法,我想要所有或一些明确的缓存方法列表有什么办法,我可以用Spring透明地做到这一点?什么是春季最简单/最透明的缓存方法?

什么我不想要的是:

  • 要更改源代码/加 anotations
  • 手动必须打造一批代理豆的数量DAO的,并重新连接它们。

理想情况下,与正则表达式相匹配的DAO和方法的缓存,并根据需要自动包装自己围绕DAO的。

我们正在使用OSCache,所以这样的例子会非常棒。

回答

0

Spring AOP是你想要的,我想。这将使您能够为您的DAO自动创建代理对象,而无需手动完成全部代理对象。

虽然这是一个复杂的话题,所以我建议你read the relevant section Spring文档。作为一个让你开始的想法,BeanNameAutoProxyCreator可能对你有用。 AspextJK的东西是全血的AOP方法,但它非常可怕。基于模式的AOP方法相当容易,但灵活性较差。

其中 Spring框架的重要的原则是, 非侵入性;这是想法 ,你不应该被迫 介绍框架特定的类 和接口到您的 业务/域模型。然而,在 一些地方Spring框架确实 给你介绍 Spring框架特定依赖 到你的代码的选项:在 的理由给你这个选项是因为在 某些情况下,这可能只是 平原更容易以 这样的方式读取或编码 特定的功能块。尽管Spring框架 (几乎)总是为您提供 的选择:您可以自由决定 哪个 选项最适合您的特定使用 案例或方案。

这样一个与 有关的选择,这一章就是其中AOP 框架(和哪种AOP风格)到 选择。您可以选择AspectJ 和/或Spring AOP,并且您还可以选择@AspectJ 批注样式方法或 Spring XML配置样式 方法。本章 选择引进 @AspectJ风格的方法首先应 不能作为该 Spring团队倾向于在 Spring XML配置风格@AspectJ 注解风格的指示的事实。

请参阅标题为章节6的章节。4, “选择使用哪种AOP申报样式 ”可以更全面地讨论各种样式的。

至于实际的缓存,你必须自己去做,但是一旦AOP钩子被集成,这应该是直截了当的。

0

您可以尝试Spring Modules提供的缓存。它通过方面做缓存,并支持多种缓存解决方案,如OSCache的,的EHCache,JBoss缓存等

1

您可以使用@Cacheable注解和AOP方面,从jcabi-aspects

@Cacheable(lifetime = 5, unit = TimeUnit.SECONDS) 
public String load(URL url) { 
    return url.openConnection().getContent(); 
} 
相关问题