我是spring aop的初学者,我正在阅读spring aop文档以了解概念,但无法理解“目标对象”。
文档说,目标对象是“一个或多个方面所建议的对象。也称为建议对象” 。
在一个或多个方面得到建议是什么意思?谁能向我解释莱曼术语中的目标对象,因为我还是个初学者。
答案 0 :(得分:0)
有关一些基本AOP术语的简单说明,请参阅my other answer。请先阅读该内容,然后再继续阅读此处。
因此,目标对象是您要向其添加新行为的(Java或Spring)组件,通常是跨领域关注点,即某些行为应用于代码库中的许多类。
方面是一类,您可以在其中实现该跨领域关注点,并确定在何处以及如何应用它。 where 是由 pointcut 定义的,它是某种搜索表达式,用于查找代码库中相关的部分以将行为应用到其中。 方法是通过称为建议的方面方法实现的。
因此,当我们说一个方面建议一个对象时,这意味着它在不更改类本身的情况下为其添加了(跨领域的)行为。
答案 1 :(得分:0)
是否可以定义多个目标,如下所示:
@Aspect
@Component
public class EventHandlerAspect {
@Around(value = "execution(* com.handler.EventHandler+.handleEvent(..)) "
+ "&& within(com.handler..*) "
+ "&& this(eventHandler) "
+ "&& args(message))")
public Object around(ProceedingJoinPoint proceedingJoinPoint,
EventHandler<Object> eventHandler,
Message<Object> message) throws Throwable {
Object obj = null;
// 1. invoke preProcess
eventHandler.preProcess(message);
try {
// 2. invoke the join point
obj = proceedingJoinPoint.proceed();
} finally {
// 3. invoke postProcess
eventHandler.postProcess(message);
}
return obj;
}
}