AOP切面管理日志的两种方式
最近想看一下切面编程,然后之前文章里边转载过一篇自定义注解的原理,在今天这篇文章里边,将会使用自定义注解应用到管理日志里边,当然这个只是一个简单的demo,具体的向数据库插入日志,这个自己在项目中使用到的时候,new实体,然后对应地方执行操作就行了。。。
先简单介绍几个概念:
AOP配置元素 | 描述
------------ | -------------
`<aop:advisor>` | 定义AOP通知器
`<aop:after>` | 定义AOP后置通知(不管该方法是否执行成功)
`<aop:after-returning>` | 在方法成功执行后调用通知
`<aop:after-throwing>` | 在方法抛出异常后调用通知
`<aop:around>` | 定义AOP环绕通知
`<aop:aspect>` | 定义切面
`<aop:aspect-autoproxy>` | 定义`@AspectJ`注解驱动的切面
`<aop:before>` | 定义AOP前置通知
`<aop:config>` | 顶层的AOP配置元素,大多数的<aop:*>包含在<aop:config>元素内
`<aop:declare-parent>` | 为被通知的对象引入额外的接口,并透明的实现
`<aop:pointcut>` | 定义切点
上边的是xml配置里边的相关概念,但是采用注解方式,意思跟上边一样。
1.注解方式,顺便提一下自定义注解,在方法上加上自定义注解,可以让你知道程序知道这个方法是干嘛用的,直接看代码:
注解类:
service方法层:
2.xml方式
LogInterceptor代码:
最后附上一张执行后的结果:
参考文章:
http://www.cnblogs.com/jianjianyang/p/4910851.html#top
http://www.cnblogs.com/flowwind/p/4782606.html