1.接口类 package SpringTestAOP.service; public interface Calculator { public int add(int i,int j); }
2.实现类
package SpringTestAOP.impl; import SpringTestAOP.service.Calculator; public class CalculatorImpl implements Calculator { @Override public int add(int i, int j) { int result = i+j; return result; } } 3.切面类 package SpringTestAOP.config; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.context.annotation.EnableAspectJAutoProxy; import java.util.Arrays; import java.util.List; @Aspect public class CalculationAnnotation { @Pointcut("execution(* SpringTestAOP.impl.CalculatorImpl.*(..))") private void pointCutMethod() { } @Before("pointCutMethod()") public void before(JoinPoint join){ String mathName=join.getSignature().getName(); List<Object> args = Arrays.asList(join.getArgs()); System.out.println("前置通知---->before 方法名是:"+mathName+"\t参数列表是:"+args); } @After("pointCutMethod()") public void after(){ System.out.println("后置通知---->after...."); } }
4.配置文件(其中有导入其他xml文件)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <aop:aspectj-autoproxy/> <bean id="check" class="SpringTestAOP.config.CalculationAnnotation"/> <import resource="test.xml"/> </beans>
5.被导入的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="calculator" class="SpringTestAOP.impl.CalculatorImpl"/> </beans>
6.验证类
package SpringTestAOP.demo; import SpringTestAOP.service.Calculator; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class BeanTest2 { public static void main(String[] args) { BeanFactory factory = new ClassPathXmlApplicationContext("SpringTestAOP/config/applicationContext.xml"); Calculator calculator = (Calculator) factory.getBean("calculator"); calculator.add(1,2); calculator.sub(2,1); } }