Spring的AOP的注解开发
程序员文章站
2022-07-12 23:17:14
...
Spring的AOP的注解开发
Spring的AOP注解
- 切面 @Aspect
- 前置通知 @Before
- 后置通知 @AfterReturning
- 环绕通知 @Around
- 异常抛出 @AfterThrowing
- 最终通知 @After
- 切入点注解 @Pointcut(使用切入点注解可以方便多个通知加强在一个方法上,同时方便修改代码)
Spring的AOP注解的使用
第一步:配置文件配置组件扫描和AOP注解开发
<?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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.aop"></context:component-scan>
<!--开启AOP的注解开发-->
<aop:aspectj-autoproxy/>
</beans>
第二步:创建接口和实现
第三步:创建切面类(核心)
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class MyAspect1 {
@Before(value = "execution(* com.aop.daoImpl.DepartmentDaoImpl.find(..))")
public void before(){
System.out.println("前置通知========");
}
@AfterThrowing(value = "MyAspect1.pointcut1()",throwing="throwable")
public void throwException(Throwable throwable){
System.out.println("异常抛出"+throwable.getMessage());
}
@Pointcut(value = "execution(* com.aop.daoImpl.DepartmentDaoImpl.find(..))")
public void pointcut1(){}
}
第四步:测试
总结
与XML开发相比较而言,注解开发,开发速度快,但后期的维护扩展比较困难,而XML开发速度慢,但维护扩展方便
上一篇: java类中数据成员初始化的顺序