我想用 @Cacheable
注释我的方法还有@Timed
(从千分尺)。
但我想要 @Timed
仅在数据未定时的情况下应用。
有没有办法做到这一点,以正确的顺序放置注释是否足够 - 那将是哪个顺序?
我的 @Timed
也在使用 TimedAspect
,不确定这是否相关。
现在我这样做如下:
@Cacheable
@Timed
public String getValue(long id) {
...
}
我找不到
@Cacheable
的任何文档那将讨论这个。
最佳答案
这很棘手,因为您正在处理 Spring 围绕您的业务 bean 创建的 AOP 代理,所以我不确定您是否可以依赖注释的顺序。
我认为你有几个选择:
@Cacheable
另一个是 @Timed
.但是,我认为这对您不起作用,因为您需要多个 bean(对同一个 bean 的调用不会被 AOP 代理拦截)。因此,您需要两个 bean,一个充当外观,另一个执行实际的 @Timed
您想要缓存和监控的昂贵调用。 @Timed
和 @Cacheable
并实现Orderable
在这两个接口(interface)中,然后在你的 bean 中使用它们。我不完全确定这会奏效,因为这取决于如何拾取注释。沿着这条线:Specifying the order of proxy creation in Spring 希望能帮助到你。
关于java - Spring中注解处理的顺序(@Cacheable和@Timed),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58688985/