AOP 注解配置的简单入门

AOP 注解配置的简单入门

快速入门

基于注解的aop开发步骤:

  1. 创建目标接口和目标类(内部有切点)
  2. 创建切面类(内部有增强方法)
  3. 将目标类和切面类的对象创建权交给spring
  4. 在切面类中使用注解配置织入关系
  5. 在配置文件中开启组件扫描和AOP的自动代理
  6. 测试
public interface TargetInterface{
    void save();
}
@Component("target")
public class Target implements TargetInterface{
    public void save(){
        System.out.println("save Running...");
    }
}
@Component("myAsect")
@Aspect  //表中MyAspect是一个切面类
public class MyAspect{
    //配置前置增强
    @Before(value="execution(* com.jotian.aop.*.*(..))")
    public void before(){
        System.out.println("----------前置增强方法--------")
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlnscontext="http://www.springframework.org/schema/context"
       xmlnsaop="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/context http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
	<!--组件扫描-->
    <context:component-scan base-package="com.jotian.aop"/>
    <!--aop自动代理-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-aop:xml")
public class AopText{
    @Autowired
    private TargetInterface target;
    @Test
    public void test1(){
        target.save();
    }
}

注解配置AOP详解

注解通知的类型

通知的配置语法:@通知注解(“切面表达式”)

名称 注解 说明
前置通知 @Before 用于配置前置通知,指定增强的方法在切入点方法之前执行
后置通知 @AfterReturning 用于配置后置通知,指定增强的方法在切入点方法之后执行
环绕通知 @Around 用于配置环绕通知,指定增强的方法在切入点方法之前和之后都执行
异常抛出通知 @AfterThrowing 用于配置异常抛出通知,指定增强的方法在出现异常时执行
最终通知 @After 用于配置最终通知。无论增强方式执行是否有异常都会执行

切点表达式的抽取

同xml配置AOP一样,我们可以将切点表达式抽取。抽取方式是在切面内定义方法,在该方法上使用@Pointcut注解定义切点表达式,然后在在增强注解中进行引用。具体如下

@Component("myAspect")
@Aspect
public class MyAspect{
    @Before("MyAspect.myPoint")
    public void before(){
        System.out.println("前置代码增强...")
    }
    @Pointcut("execution(* com.jotian.aop.*.*(..))")
    public void pointcut(){
    }
}
@AfterThrowing("MyAspect.pointcut()")
public void afterThrowing(){
    System.out.println("异常抛出增强...")
}
@After("pointcut()")
public void after(){
    System.out.println("最终增强...")
}

AOP知识要点

  • 注解aop开发步骤

    1. 使用@Aspect标注切面类
    2. 使用@通知注解标注通知方法
    3. 在配置文件中配置aop自动代理< aop:aspectj-autoproxy/>
  • 通知注解类型

    名称 注解 说明
    前置通知 @Before 用于配置前置通知。指定增强的方法在切入点方法之前执行
    后置通知 @AfterReturning 用于配置后置通知。指定增强的方法在切入点方法之后执行
    环绕通知 @Around 用于配置环绕通知。指定增强的方法在切入点方法之前和之后都执行
    异常抛出通知 @AfterThrowing 用于配置异常抛出通知。指定增强的方法在出现异常时执行
    最终通知 @After 用于配置最终通知,无论增强方式执行是否有异常都会执行
posted @   Tian-Jotian-Yongxing  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示