//定义切面
@Aspect
public class AnnotationPointCut {
//定义切入点
@Before(value = "execution(* com.simple1.UserDaoImpl.*(..))")
public void before(){
System.out.println("方法执行前");
}
@After(value = "execution(* com.simple1.UserDaoImpl.*(..))")
public void after(){
System.out.println("方法执行后");
}
// 环绕方法,可以写一个参数,用于接收我们要切入的点
@Around(value = "execution(* com.simple1.UserDaoImpl.*(..))")
public void around(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("环绕前");//环绕前,要在before前面
Object proceed = joinPoint.proceed();//执行被代理对象的方法
System.out.println(joinPoint.getTarget().getClass());
// joinPoint.getSignature() 获取被代理对象被调用的方法签名
System.out.println(joinPoint.getSignature());
System.out.println("环绕后");//环绕后,要在after之前
}
}
环绕方法可以添加一个参数
ProceedingJoinPoint joinPoint
是一个连接点的对象,里面保存着目标对象,可以调用连接点执行被代理的方法
xml上下文中需要的配置
<!-- 方法三:使用注解定义切面-->
<!-- 配置切面对象-->
<bean class="com.Simple2.AnnotationPointCut" id="pointCut"></bean>
<!-- 开启aop注解支持-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>