Spring AOP面向切面编程4:AOP相关概念二:JoinPoint连接点对象;(getTarget();getSignature();getArgs())

本文详细介绍了Spring AOP中的JoinPoint接口,包括使用JoinPoint获取目标对象、目标方法及参数的方法。通过示例展示了如何在切面类中利用这些信息扩展功能,并在SpringApplication入口测试类中调用切面方法。在项目调试和观测中,获取目标方法的参数对于理解方法执行情况至关重要。
摘要由CSDN通过智能技术生成

说明:

(1)本篇博客的代码,基于【Spring AOP面向切面编程2:初识AOP二:AOP初体验;(一个Spring AOP的案例,走了一遍流程)】 中的代码;

(2)一定注意,【这儿有一个类A,然后我们定义了一个切面类B,然后通过AOP配置,把切面类B作用到A类上;;;;那么A类一定要在IoC容器中配置bean】;还是那句话,AOP必须在IoC的基础,才OK; 

(3)强调说明:【Object[] getArgs():获取目标方法的参数】在程序调试和观测时,是非常重要的;

目录

一:JoinPoint连接对象简介 

二:案例

MethodAspect切面类;

SpringApplication入口测试类;

强调说明:【Object[] getArgs():获取目标方法的参数】在程序调试和观测时,是非常重要的;


一:JoinPoint连接对象简介 

JoinPoint连接点,用于获取目标类/目标方法的相关信息;

 

(1)Object getTarget():获取IoC容器内的目标对象;得到了目标对象,就可以得到对应的类;(由这一条,再一次印证,AOP必须以IoC为基础)

(2)Signature getSignature() :获取目标对象中

可以使用Spring AOP的Aspect注解来实现操作记录到数据库的功能。首先,需要创建一个切面类,使用@Aspect注解进行标记,并在该类中声明一个@Before注解的方法。在该方法中,使用JoinPoint对象来获取连接点信息,进而获取操作记录的相关信息,并将其保存到数据库中。需要注意的是,操作记录的相关信息应该尽可能地详细,包括操作人员、操作时间、操作类型、操作目标等。 示例代码如下: @Aspect @Component public class OperatorAspect { @Autowired private OperatorLogService operatorLogService; @Before("execution(* com.example.demo.service.*.*(..))") public void logOperator(JoinPoint joinPoint) { OperatorLog operatorLog = new OperatorLog(); operatorLog.setOperatorName("Admin"); operatorLog.setOperatorTime(LocalDateTime.now()); operatorLog.setOperatorType("Update"); operatorLog.setOperatorTarget(joinPoint.getSignature().toShortString()); operatorLogService.save(operatorLog); } } 其中,JoinPoint对象提供了获取连接点信息的多种方法,如下表所示: 方法名 描述 getArgs() 获取连接点方法运行时的参数列表 getThis() 获取代理对象 getTarget() 获取目标对象 getSignature() 获取连接点的方法签名对象 toShortString() 获取连接点的方法简短签名名称 toLongString() 获取连接点的方法全限定签名名称 getKind() 获取连接点类型,如method-execution getSourceLocation() 获取连接点所在的位置 getStaticPart() 获取连接点所在的静态部分 需要在Spring配置文件中将该切面类注入到容器中,并启用AOP自动代理: <context:component-scan base-package="com.example.demo"/> <aop:aspectj-autoproxy proxy-target-class="true"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值