案例:使用Spring AOP 实现日志输出2019-07-09

2019-07-11  本文已影响0人  琴匣自鸣

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()方法返回传递给目标方法的参数数组

上一篇 下一篇

猜你喜欢

热点阅读