package com.spring.aop;
public interface Calculator {
int add(int i,int j);
int sub(int i,int j);
}
实现类:
package com.spring.aop;
import org.springframework.stereotype.Component;
@Component
public class CalculatorImpl implements Calculator{
@Override
public int add(int i, int j) {
int result = i + j;
return result;
}
@Override
public int sub(int i, int j) {
int result = i - j;
return result;
}
}
package com.spring.aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("aop-aspectj.xml");
Calculator cal = (Calculator) ctx.getBean("calculatorImpl");
int result = cal.add(1,2);
System.out.println(result);
}
}
在执行计算器的add方法前加入了日志输出功能,而我们并没有干涉核心代码,保持了核心代码的纯洁。
通知配置相关知识点:
@Before("execution(public int com.spring.aop.CalculatorImpl.add(int, int))") 注解标识在切面方法上,表示在目标对象(add方法)执行前执行这个方法 上面只制定了一个方法.CalculatorImpl类的add方法。 可以使用通配符 * 指定多个方法,如: