本篇文章主要介绍了"Spring中AOP实例详解",主要涉及到Spring,Annotation,Application方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
Spring中AOP实例详解 需要增强的服务假如有以下service,他的功能很简单,打印输入的参数并返回参数。@Servicepublic class Sim...
Spring中AOP实例详解
需要增强的服务
假如有以下service,他的功能很简单,打印输入的参数并返回参数。
@Service
public class SimpleService {
public String getName(String name) {
System.out.println(get name is: + name);
return name;
}
}
定义切面和切点
@Component
@Aspect
public class L
ogAspect {
// 定义切点
@Pointcut(within(com.ydoing.service..*))
// @Pointcut(execution(* com.ydoing.service.*.*(..)))
public void pointCut() {
}
}
Before增强处理
// 定义Before增强处理
// 在目标方法调用之前执行增强处理
@Before(pointCut())
public void before(JoinPoint jp) {
// 获取连接点传入参数
// Object args = jp.getArgs();
System.out.println(Before增强处理--execute before target method call);
}
测试输出:
Before增强处理--execute before target method call
get name is: Bob
AfterReturning增强
// 在目标方法调用之后执行增强处理
@AfterReturning(pointcut = pointCut(), returning = ret)
public void afterReturning(JoinPoint jp, Object ret) {
System.out.println(AfterReturnin增强处理--execute after target method call, return value is : + ret);
}
测试输出:
get name is: Bob
AfterReturnin增强处理--execute after target method call, return value is :Bob
Around增强
@Around(pointCut())
public void around(ProceedingJoinPoint jp) {
System.out.println(Around增强--around start...);
Object[] args = jp.getArgs();
// 修改目标方法传入的参数
args[0] = around_add_ + args[0];
try {
System.out.println(修改传入参数后执行输出:);
jp.proceed(args);
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Around增强--around end);
}
输出: