欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring的AOP的注解开发

程序员文章站 2022-07-12 23:17:14
...

Spring的AOP注解

  1. 切面 @Aspect
  2. 前置通知 @Before
  3. 后置通知 @AfterReturning
  4. 环绕通知 @Around
  5. 异常抛出 @AfterThrowing
  6. 最终通知 @After
  7. 切入点注解 @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开发速度慢,但维护扩展方便