如果我有一堆DAO和一堆getXXX方法,并且需要缓存的方法的全部或一些显式列表,那么有什么方法可以用Spring透明地这样做吗?
我不想要的是
理想情况下,使用正则表达式来匹配DAO和方法来缓存并根据需要自动环绕DAO。
我们使用的是OSCache,所以用这个例子就太棒了。
发布于 2009-07-28 07:38:41
春天的AOP是你想要的,我想。这将使您能够自动为DAO创建代理对象,而无需手动检查它们。
不过,这是一个复杂的主题,因此我建议您使用Spring的阅读相关章节。不过,作为一个让您开始的想法,BeanNameAutoProxyCreator可能对您很有用。AspextJK是一种纯正的AOP方法,但它相当可怕。基于架构的AOP方法比较容易,但不太灵活。
Spring框架的核心原则之一是非侵入性;这就是不应该强迫您在业务/域模型中引入特定于框架的类和接口的想法。然而,在某些地方,Spring框架确实为您提供了将Spring框架特定的依赖项引入到代码库中的选项:提供这些选项的理由是,在某些场景中,以这种方式阅读或编写特定的功能可能非常简单。但是,Spring框架(几乎)总是为您提供选择:您可以自由地做出明智的决定,以确定哪个选项最适合您的特定用例或场景。 与本章相关的一种选择是选择哪种AOP框架(以及哪种AOP风格)。您可以选择AspectJ和/或Spring,也可以选择@AspectJ注释样式的方法或Spring配置风格的方法。本章选择首先介绍@AspectJ风格的方法,这一事实不应被看作是Spring团队倾向于@AspectJ注释风格的方法而不是Spring配置风格的指示。 请参阅题为“选择使用哪种AOP声明样式”的第6.4节,以更全面地讨论每种样式的原因和原因。
至于实际的缓存,您必须自己去做,但是一旦AOP钩子被集成,这应该是简单明了的。
发布于 2013-02-03 07:43:08
您可以从@Cacheable使用jcabi-方面注释和AOP方面。
@Cacheable(lifetime = 5, unit = TimeUnit.SECONDS)
public String load(URL url) {
return url.openConnection().getContent();
}发布于 2009-08-06 15:39:10
您可以尝试弹簧模提供的缓存。它通过方面进行缓存,并支持几种缓存解决方案,如OsCache、EHCache、JBoss缓存等。
https://stackoverflow.com/questions/1192409
复制相似问题