动态代理设计模式(Dynamic Proxy)
一、开发步骤
- 开发原始类 -- 核心功能
①规范
②原始类
2.配置原始类的相关信息
3.定义额外功能
4.配置额外功能类的相关信息
5.定义切点
6.组装切面
7.测试
二:切入点表达式的含义
分类:(3种) 方法切入点、类切入点、包切入点
1.方法切入点 -- 维度:只与方法有关,与类和包无关
例:①为注册regist()方法添加额外功能
②为带有一个参数为String类型的regist()方法添加额外功能
③为带有两个参数为String类型的regist()方法添加额外功能
④为第一个参数为String类型,后面参数不管的regist()方法添加额外功能
2.类切入点
例:为所有包以及子包下的UserServiceImpl类中的第一个参数为String的regist()方法添加额外功能
3.包切入点
例:为com.hp.service中的UserServiceImpl类的带一个String参数的regist方法添加额外功能
三:切入点函数
除execution外,常用的还有args和within
1.args:只专注于方法的参数
例:①为带有一个参数为String类型的regist()方法添加额外功能
原:execution(* *(String))
args(String)
②为第一个参数为String类型,后面参数不管的regist()方法添加额外功能
原:execution(* *(String,..))
args(String,..)
2.within:只专注于包和类
例:①给UserServiceImpl类中的所有方法添加额外功能
原:execution(* *..UserServiceImpl.*(..))
within(*..UserServiceImpl)
②给com.hp.service包以及子包下所有类中的方法添加额外功能
原:execution(* com.hp.service..*.*(..))
within(com.hp.service..*)