spring日志添加

来源:互联网 发布:淘宝男装品牌折扣店 编辑:程序博客网 时间:2024/06/04 23:29

小弟使用ssh和ssm做过项目,这里的s总有一个是spring,那么为啥spring有如此超然的地位呢?表现层的servlet,struts和springmvc,数据层的jdbc,mybatis和hibernate,单做为整合的框架只有spring了,实施证明,spring的ioc和aop确实是一件神器,这里写下aop运用中的日志问题.

既然要说aop,那么帮我巩固下知识,aop编程是面向切面的编程,aop的8个基本概念:连接点,切入点,关注点,切面,目标对象,通知,aop代理,植入.
下面一一介绍,并且以hibernate加spring事务举例:
连接点:代表程序执行过程中特定的方法,如果对事务的的话就是逻辑层中的具体方法.
切入点:连接点的集合,这个是逻辑层的所有方法.
关注点:程序员锁关注的共性,这个应该是aop配置总切面的expression中的东西吧.
切面:是切入点的集合,是所有模块逻辑层的方法的集合
关注对象:包含了连接点的对象
通知:关注点的实现.具体功能的实现
aop代理:把功能回帖到目标对象,具体功能的实现
植入:实现aop声明的功能.具体功能的实现

我觉着最后的三个是没有必要分的,嘿嘿!

接着说下通知,分为5种,
before:方法执行器前
after:执行后
after-return:成功执行
after-throwing:执行失败
around:这个功能是最全的,包括执行前和执行后

代码玩玩,applicationContext.xml中的配置:

<!--声明bean实例--><bean id="myAdvice" class="com.javakc.aop.MyAdvice"> </bean> <!--配置aop--><aop:config>     <!--作为myAdvice的切面-->    <aop:aspect ref="myAdvice">     <!--切入点,expression是关注的对象-->    <aop:pointcut id="kc" expression="execution(* com.javakc..*.*Servlet.*())"/>     <!--通知,代理-->    <aop:around pointcut-ref="kc" method="addLog"/> </aop:aspect> </aop:config>

举例执行代码:

public class MyAdvice {    Logger log=Logger.getLogger(MyAdvice.class);     public Object addLog(ProceedingJoinPoint pjp){ log.info(pjp.METHOD_CALL);     Object retVal=pjp.proceed();     return retVal;   } }
0 0