1.添加 AOP 相关 jar
2.编写增强处理实现日志功能
3.编写Spring 配置文件,对业务方法进行增强处理,
public void *(entity.User) '*'表示匹配所有方法名
public void addUser(..) '..'表示匹配所有参数个数和类型
* com.service.*.*(..) 这个表达式匹配 com.service 包下所有类和类的所有方法
* com.service..*.*(..) 匹配com.service包及其子包下所有类的所有方法.
注: <property name="dao' ref="dao"></property> 注意这里的name指的是set方法后面的名字并不是指属性名
补充一下可能出现的错误,Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to XXXX
可能出现位置,转换Impl时出错,意思是动态代理生成的类无法转换到自定义的实现类
解决办法:在aop:config标签中添加 proxy-target-class="true" 即可
由于生成代理类有两种方式:JDK和CGLIB,一种是基于接口的,一种是基于类的。
如果添加上面的属性则使用基于类的cglib的方式,相反,如果没有写或者是false则通过jdk的基于接口的方式生成代理类。
4.编写代码,获取带有增强处理的业务对象
Join Point 类----jp.getTarget()方法获取被代理目标对象
jp.getSignature()方法返回被代理的目标方法
jp.getArgs()方法返回传递给目标方法的参数数组
网友评论