Introduction和Before, After, Around等一样,都是Spring AOP的一种Advice类型。和Before, After, Around等类型的Advice不同的是,Introduction不是横切在Joinpoint处来新增advice逻辑的,而是为原有对象添加新的特性或者行为。我们可以看看具体的使用方法就明白了。
1、 先新建一个待被代理的Bean,可以看到这个bean里只有一个hello方法:
2、 新建一个ICount接口及它的一个实现类,这给接口有一个计数的方法:
3、 新建一个为BeIntroduced bean生成Introduction类型advice代理的advisor,在Advisor里使用@DeclareParents注解为BeIntroduced引入ICount这个“特性”:
4、 新建一个接口,在里面用BeIntroduced调用ICount的实现类的方法: