0. 前言
首先啊,这个introductions 我个人感觉不太常用,但是我再spring文档中看到了,就想分享一下啊。我也没有正式的用过,具体的业务场景中的使用我也不知道。有再项目中用过的大佬,可以指正一下。
- 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. 总结
这个我也是记录一下,不过我感觉用的时候不多。所以就随便写了两句。