Spring以注解方式使用aop

7. Spring以注解方式使用aop applicationContext.xml:

   <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd ">

<!-- 1.配置目标对象 -->

<bean name="userService" class="cn.example.service.UserServiceImpl" ></bean>

<!-- 2.配置通知对象 -->

<bean name="myAdvice" class="cn.example.e_annotationaop.MyAdvice" ></bean>

<!-- 3.开启使用注解完成织入 -->

<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

</beans>

扫描二维码关注公众号,回复: 3698360 查看本文章

Spring注解使用aop通知类(目标方法执行前后要执行的代码所在类):

//通知类

@Aspect

//表示该类是一个通知类

public class MyAdvice {

@Pointcut("execution(* cn.example.service.*ServiceImpl.*(..))")

public void pc(){}

//前置通知

//指定该方法是前置通知,并制定切入点

@Before("MyAdvice.pc()")

public void before(){

System.out.println("这是前置通知!!");

}

//后置通知

@AfterReturning("execution(* cn.example.service.*ServiceImpl.*(..))")

public void afterReturning(){

System.out.println("这是后置通知(如果出现异常不会调用)!!");

}

//环绕通知

@Around("execution(* cn.example.service.*ServiceImpl.*(..))")

public Object around(ProceedingJoinPoint pjp) throws Throwable {

System.out.println("这是环绕通知之前的部分!!");

Object proceed = pjp.proceed();//调用目标方法

System.out.println("这是环绕通知之后的部分!!");

return proceed;

}

//异常通知

@AfterThrowing("execution(* cn.example.service.*ServiceImpl.*(..))")

public void afterException(){

System.out.println("出事啦!出现异常了!!");

}

//后置通知

@After("execution(* cn.example.service.*ServiceImpl.*(..))")

public void after(){

System.out.println("这是后置通知(出现异常也会调用)!!");

}

}

目标类和测试类省略

猜你喜欢

转载自blog.csdn.net/u011266694/article/details/78918496