// AopLog.class
// 切面类
@Component
@Aspect
public class AopLog {
// aop编程通知分类:前置、后置、运行、异常、环绕
@Before("execution(* com.yuyou.service.UserService.add(..))")
public void before(){
System.out.println("前置通知,方法执行之前执行...");
}
@After("execution(* com.yuyou.service.UserService.add(..))")
public void after(){
System.out.println("后置通知,方法执行之后执行...");
}
@AfterReturning("execution(* com.yuyou.service.UserService.add(..))")
public void returning(){
System.out.println("运行通知...");
}
@AfterThrowing("execution(* com.yuyou.service.UserService.add(..))")
public void afterThrowing(){
System.out.println("异常通知...");
}
@Around("execution(* com.yuyou.service.UserService.add(..))")
public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{
System.out.println("环绕通知,调用方法之前执行...");
// 代理调用方法,注意点:如果调用方法抛出异常就不会执行后面代码
proceedingJoinPoint.proceed();
System.out.println("环绕通知,调用方法之后执行...");
}
}
// Service接口
public interface UserService {
public void add();
}
// Service接口实现
@Service
public class UserServiceImpl implements UserService{
@Override
public void add() {
System.out.println("add方法()");
//int i = 1/0;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
UserService userService = (UserService) applicationContext.getBean("userServiceImpl");
userService.add();
}
}