AOP 基本使用

注解按生命周期来划分可分为3类:

1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;

2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;

3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

这3个生命周期分别对应于:Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。

那怎么来选择合适的注解生命周期呢?

首先要明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。一般如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解;如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,则可选用 SOURCE 注解。

 

创建切面包,创建自定义注解,提供记录核心方法的信息

加上@Retention注解,生命周期选择Runtime,运行时存在

Service层中的实现类,类中有核心方法。加上自定义的注解,括号内写(“登录操作”),“登录操作”:就是核心方法的信息

 

创建方法

public Object aroundMethod(ProceedingJoinPoint  pjp){

}

方法加上@Around注解,括号内存注解:@annotation(自定义的注解的全限定名)

//在带这个自定义注解的核心方法,前后执行aroundMethod()

@Around的作用

1.既可以在目标方法之前织入增强动作,也可以在执行目标方法之后织入增强动作;

2.可以决定目标方法在什么时候执行,如何执行,甚至可以完全阻止目标目标方法的执行;

3.可以改变执行目标方法的参数值,也可以改变执行目标方法之后的返回值; 当需要改变目标方法的返回值时,只能使用Around方法;

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring AOP(面向切面编程)是 Spring 框架的一个模块,它提供了一种在程序运行期间动态代理类的机制,以便能够在不修改原始代码的情况下,实现诸如日志记录、性能统计、安全控制等横向关注点的功能。Spring AOP 基于代理模式实现,通过代理对象包装目标对象,从而实现在目标方法执行前、执行后、执行异常、执行返回时等时刻,插入一些额外的逻辑。下面是 Spring AOP基本操作: 1. 定义切面类:切面类包含了一系列的通知(Advice),通知描述了切面类在何时执行某个操作。 2. 定义切入点:切入点指定了哪些类的哪些方法会被切面类的通知所拦截。 3. 定义通知:通知是切面类中的方法,它描述了切面类在拦截到切入点处的程序执行时,应该执行的操作。Spring AOP 提供了五种类型的通知: - Before:在目标方法执行前执行通知。 - After:在目标方法执行后执行通知。 - AfterReturning:在目标方法执行后返回结果时执行通知。 - AfterThrowing:在目标方法抛出异常时执行通知。 - Around:在目标方法执行前后都执行通知。 4. 配置切面:切面需要在 Spring 的配置文件中进行配置,以便将切面类与切入点关联。 5. 启用 AOP:启用 AOP 需要在 Spring 的配置文件中配置 <aop:aspectj-autoproxy /> 标签。 通过以上基本操作,就可以在 Spring使用 AOP 实现对目标对象的拦截和增强。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值