1.需要被代理的对象
public interface ICalculator {
int div(int i,int j);
}
@Component(value = "calculatorImpl")
public class CalculatorImpl implements ICalculator {
@Override
public int div(int i, int j) {
System.out.println(i/j);
return i/j;
}
}
2.切面类
@EnableAspectJAutoProxy
@Component
@Aspect
public class AspectTest {
@Pointcut(value = "execution(* com.gaobin.java.aop.ICalculator.div(..))")
public void beforePointcut() {
}
@Before("beforePointcut()")
public void doBeforeCheck(){
System.out.println("Calculator Before");
}
@After("beforePointcut()")
public void doAfterCheck(){
System.out.println("Calculator After");
}
@AfterThrowing("beforePointcut()")
public void doAfterThrowingCheck(){
System.out.println("Calculator AfterThrowing");
}
@AfterReturning("beforePointcut()")
public void doAfterReturningCheck(){
System.out.println("Calculator AfterReturning");
}
}
3.启动
public class App {
public static void main(String[] args) throws InterruptedException {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring-aop.xml");
ICalculator calculator = (ICalculator) ac.getBean("calculatorImpl");
calculator.div(1,0);
}
}