Spring 注释方法的方面

Spring 注释方法的方面,spring,aspectj,Spring,Aspectj,我有一个带有注释方法的类: @Service class MessageService{ @AutoWired MessageDao dao; public void setDao(MessageDao dao){ this.dao=dao; } @Memoize public void addNode(Message m){ } @Memoize public void updateNode(Messag

我有一个带有注释方法的类:

@Service
class MessageService{
    @AutoWired
    MessageDao dao;
    public void setDao(MessageDao dao){
        this.dao=dao;
    }
    @Memoize
    public void addNode(Message m){

    }
    @Memoize
    public void updateNode(Message m){

    }
    @Memoize
    public List<Message> getMessagesByEntity(String key){

    }
}
现在,对于上述每种方法,缓存活动的性质将有所不同。
因此,我需要根据实际调用的方法,使方面的行为有所不同。
我如何做到这一点?
我相信最好的做法是通过某种方式将@Memoize和方法名称检查结合起来,为每个底层方法提供一个单独的方面方法。

非常感谢您的帮助。

例如,根据惯例,您可以为不同类型提供多个切入点

execution(* *.(@Memoize get*)(..)),
execution(* *.(@Memoize add*)(..)), and
execution(* *.(@Memoize update*)(..))
您还可以创建自己的注释,如
@memoizerad、@MemoizeUpdate、@memoizedd
,以使切入点更加明确


或者,您可以使用参数创建自定义注释,如
@Cached(type=CacheType.READ)
,然后在aspect中使用switch语句。

如果每个方法的代理代码都不相同,那么使用
aspect
有什么意义?为什么不把它作为方法的一部分呢?对于类/类型的方法,代理代码可以是相同的;当有另一个注释拖在一起时。
execution(* *.(@Memoize get*)(..)),
execution(* *.(@Memoize add*)(..)), and
execution(* *.(@Memoize update*)(..))