Spring AOP常用注解

本文详细介绍了Spring AOP中的核心注解,包括@EnableAspectJAutoProxy、@Aspect、@Pointcut、不同类型的通知注解(@Before、@After、@AfterReturning、@AfterThrowing、@Around)以及扩展目标类的注解。内容涵盖各个注解的作用、属性分析、使用场景和示例,同时解析了切点表达式的重要概念和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AOP常用注解

1. 用于开启注解AOP支持

1.1 @EnableAspectJAutoProxy

1.1.1 作用
开启spring对注解aop的支持
1.1.2 属性分析
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(AspectJAutoProxyRegistrar.class)
public @interface EnableAspectJAutoProxy {
   
    /**
    * 指定是否采用cglib代理。默认值为false,使用jdk的代理
    */
    boolean proxyTargetClass() default false;
    /**
    * 指定是否暴露代理对象,通过AopContext可以进行访问
    */
    boolean exposeProxy() default false;
}
1.1.3 使用场景
注解驱动开发时需要使用aop实现某些功能时需要用到此注解
1.1.4 示例
/**
* @author 刘淳
*/
@Configuration
@ComponentScan("com.liuchun")
@EnableAspectJAutoProxy
public class SpringConfiguration {
   
}

2. 用于配置切面

2.1 @Aspect

2.1.1 作用
声明当前类为切面类
2.1.2 属性分析
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Aspect {
   
    /**
     * 切面类默认为单例,当一个切面类为多例时,指定预处理的切入点表达式
     * 支持指定切入点表达式或用@Pointcut修饰的方法名称(要求全限定方法名)
     */
    public String value() default "";
}
2.1.3 示例
/**
* 记录日志的工具类
* @author 刘淳
*/
@Component
@Scope("prototype")
@Aspect(value="execution(* com.liuchun.service.impl.*.*(..))")
public class LogUtil {
   
    /**
    * 用于配置当前方法是一个前置通知
    */
    @Before("execution(* com.liuchun.service.impl.*.*(..))")
    public void printLog(){
   
        System.out.println("执行打印日志的功能");
    }
}

3. 用于配置切入点表达式

3.1 @Pointcut

3.1.1 作用
指定切入点表达式
3.1.2 使用场景
当多个通知需要执行,同时增强规则确定的情况下,就可以将切入点表达式通用化
此注解代替xml中的<aop:pointcut>,实现切入点表达式通用化
3.1.3 属性分析
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Pointcut {
   
    /**
    * 指定切入点表达式
    */
    String value() default "";
    /**
    * 指定切入点表达式的参数,可以为execution或args中的,通常情况不使用此属性也可获得参数
    */
    String argNames() default "";
}
3.1.4 示例
@Component
@Aspect
public class LogUtil {
   
    /**
     * 通用切入点表达式
     * 在value属性中使用了&&符号,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@未安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值