SpringAOP
SpringAOP基础
-
加入jar包
- com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-logging-1.2.jar
spring-aop-5.1.8.RELEASE.jar
spring-aspects-5.1.8.RELEASE.jar
spring-beans-5.1.8.RELEASE.jar
spring-context-5.1.8.RELEASE.jar
spring-core-5.1.8.RELEASE.jar
spring-expression-5.1.8.RELEASE.jar
- com.springsource.net.sf.cglib-2.2.0.jar
-
在配置文件中加入aop命名空间
-
基于注解的方式来使用 AOP
-
在配置文件中加入如下配置
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
-
把横切关注点的代码抽象到切面的类中
- 切面首先是一个IOC中的bean,即加入@Component 注解
- 切面还需要加入@Aspect 注解
-
在类中声明各种通知
- 声明一个方法
- 在方法前加入@Before 注解
-
可以在通知方法中声明一个类型为JoinPoint的参数。然后就能访问连接细节。如方法名称和参数值
- @Aspect //声明切面
@Component //注释 放入IOC容器中
public class LoggingAspect {
//声明该方法是一个前置通知:在目标方法方法开始之前执行*
号代表了加减乘除四个方法
@Before(“execution(* com.atguigu.spring.aop.impl.ArithmeticCalculator.*(int,int))”)
public void beforeMethod(JoinPoint joinPoint) { //上面的i 和j 是形参的名字 没有意义所以去掉
String methodName=joinPoint.getSignature().getName();//方法名
List args=Arrays.asList(joinPoint.getArgs());//参数
System.out.println(“The method”+methodName+" begins with"+args);
}
}
- @Aspect //声明切面
-
-
aop.impl中的ArithmeticCalculatorImpl类
-
aop.impl中的LoggingAspect类
-
aop.impl中的Main类
-
aop.impl中的ArithmeticCalculator接口
前置通知&返回通知&异常通知&后置通知&环绕通知
-
applicationContext-xml.xm文件中
-
切面LoggingAspect中
-
切面VlidationAspect中
-
ArithmeticCalculatorImpl类中
*
-
ArithmeticCalculator接口中
-
Main方法中