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*)(..))