在Spring框架中的AOP的使用
其中有俩种方法可以完成我们先使用注解的方式以便于理解
1 步骤一 加入依赖的Jar包
2 步骤二 创建一个切面类
@Aspect //注解
@Controller
public class ArithmaticCalculateaop {
//前置通知
@Before(value="execution( * com.zhiyou100.aop.*.*(..))")
public void before(JoinPoint JoinPoint) {
Object[] args = JoinPoint.getArgs();
String name = JoinPoint.getSignature().getName();
System.out.println("===com.zhiyou100===="+name+"======start===result"+Arrays.asList(args));
}
//后置通知
@After(value = "execution( * com.zhiyou100.aop.*.*(..))") 定义表达式
public void after(JoinPoint JoinPoint) {
String name = JoinPoint.getSignature().getName();
System.out.println("===com.zhiyou100===="+name+"======end===result");
}
//返回通知
@AfterReturning(value = "execution( * com.zhiyou100.aop.*.*(..))",returning="result")
public void cc(Object result) {
System.out.println("============="+result);
}
@AfterThrowing(value = "execution( * com.zhiyou100.aop.*.*(..))",throwing="e")
public void dd(Exception e) {
System.out.println("异常了");
}
}
3 步骤三 在Spring配置文件中开启切面注解
<!-- 开启包扫描 -->
<context:component-scan base-package="com.zhiyou100.aop"/>
<!-- 开启切面注解-->
<aop:aspectj-autoproxy/>
基于xml的方式(可以去掉注解)
<!-- 定义一个被通知的程序类-->
<bean id="asd" class="com.zhiyou100.aop.ArithmaticCalculateImp"/>
<!-- 定义切面类的bean -->
<bean class="com.zhiyou100.aop.ArithmaticCalculateaop" id="qwe"></bean>
<!-- 配置文件 xml -->
<aop:config>
<!--定义表达式 切点 -->
<aop:pointcut expression="execution( * com.zhiyou100.aop.*.*(..))" id="zxc"/>
<!-- 定义切面 -->
<aop:aspect ref="qwe">
<!--定义前置通知 -->
<aop:before method="before" pointcut-ref="zxc"/>
<aop:after method="after" pointcut-ref="zxc"/>
<aop:after-returning method="cc" pointcut-ref="zxc" returning="result"/>
</aop:aspect>
</aop:config>