Spring AOP 之 Introductions

本文探讨了Spring框架中的AOP Introductions特性,通过实例演示了如何利用Introductions动态地为类添加新方法,实现类功能的灵活扩展。

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

0. 前言

首先啊,这个introductions 我个人感觉不太常用,但是我再spring文档中看到了,就想分享一下啊。我也没有正式的用过,具体的业务场景中的使用我也不知道。有再项目中用过的大佬,可以指正一下。

1. 介绍

在这里插入图片描述

啥意思呢?自己翻译一下,反正翻译出来的,好像也看不太懂😂。
不过我读了好几遍,大概是这个意思:

Introductions : 使切面 能够声明 advised 对象 去实现你给定的接口,并且给这些对象提供该接口的实现。

然后官网的下面给了一个例子。


那么这个的功能能干啥呢。我测试了一下,它可以动态的扩展你这个类没有的方法.

2. 代码编写测试

2.1 前提介绍

首先我这里有一个service 名叫 UserService 还有其实现类UserServiceImpl实现类
在这里插入图片描述

其内的方法如下(其实啥也没有,做测试用的):
在这里插入图片描述

  • 一个aop的通知类。
    在这里插入图片描述
    我想在所有的service的方法前面都打印这个日志,所以其aop的配置如下。

在这里插入图片描述

其代码的运行可想而知。那肯定是你执行任意一个Service中的方法,他都会把在执行之前打印“日志”。这里就不在给出。

2.2 需求引入,

现在我想让我指定的service类都具有某个方法。这个时候就用到了Introductions了

那么再用这个之前呢,你需要定义一个接口,并且定义其实现类,里面实现其方法。

我这里就声明了一个接口,两个这个接口的实现类,名字如图
在这里插入图片描述

其中的方法如下

在这里插入图片描述

很明显,我想让UserService 拥有这个方法。那就用到了Introductions了

其配置如下
在这里插入图片描述

那么这个配置很明显,我com.lzy.service包下面的所有类,都实现了TestService这个接口,那么肯定拥有的它里面所有的方法。那么在执行的时候,具体实现是什么呢?那么很明显,第三个参数default-impl 就指明了,要调用哪个实现类的方法。

大概是这个意思吧,我也不知道这个有什么用,暂时没有遇到过

那么其测试代码如下
在这里插入图片描述

执行结果如下

在这里插入图片描述

可以发现,调用成功了。

3. 总结

这个我也是记录一下,不过我感觉用的时候不多。所以就随便写了两句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值