@DeclarParents 使用AspectJ给目标类统一引入父类,无需手动逐个添加

Introduction 引入[email protected]

用于给符合条件的类统一注入父类

比如,想给dest包下所有的类引入父类

@DeclarParents 使用AspectJ给目标类统一引入父类,无需手动逐个添加

我们现在只定义了两个service,可以看出这里的service没有实现接口。

定义一个接口HelloDao:

@DeclarParents 使用AspectJ给目标类统一引入父类,无需手动逐个添加

定义其实现类HelloDaoImpl:

@DeclarParents 使用AspectJ给目标类统一引入父类,无需手动逐个添加

下面定义切面类:

@DeclarParents 使用AspectJ给目标类统一引入父类,无需手动逐个添加

 

@DeclarParents注解,两个参数

Value 表明哪些类需要被提供父类

defaultImpl 表明提供的父类默认实现

 

 

测试:

@DeclarParents 使用AspectJ给目标类统一引入父类,无需手动逐个添加

可以看出,我们的UserService并没有实现HelloDao,但是我们使用@DeclareParents使得它有了指定的父类接口和实现HelloDao与HelloDaoImpl,并且可以执行父类的方法hello()。

同样的,此时的dest包下的CustomerService也被引入了父类HelloDao

@DeclarParents 使用AspectJ给目标类统一引入父类,无需手动逐个添加