日期:2014-05-18  浏览次数:20794 次

关于AOP的日志记录功能
rt,请问大神们如何解决。要求用注解的方式,我现在已经写好切面,拦截了service层的每个方法,
@Aspect
@Component
public class Qiemian {
  @Pointcut("execution (*service.impl.*(..))")//定义切入点  ..*.*     第一个*指的是 任何的返回类型的方法 的两个点 是指子包 第二个*是所有类 第三个*是指所有方法
 private void anyMethod(){}//声明切入点
     //point :点       Proceeding(继续) Join(连接) Point(点)
     @Around("anyMethod()")//这一种是最适合权限空值。这一种环绕通知完全可以实现上面的所有通知的功能。
     public Object HuanRaoTongZhi(ProceedingJoinPoint pjp) throws Throwable
     {
       Object result=null;
       
       System.out.println("hello--------1");
       try {
       result=pjp.proceed();//这个pjp.proceed();方法如果不写,目标对象里的所有方法都不会执行。
  } catch (Exception e) {
System.out.println("异常");
 }
     
        System.out.println("hello--------2");
       return result;
     }


}

例如在执行service中的方法之前会输出hello----------1,然后执行service中的方法,然后输出hello---------2,现在请问如何对service中的动作进行记录,Log相关类已经写好,在hello------2位置如何获得操作当前类的动作和相关信息,比如我添加了一个机构,然后又修改了,如何分别在数据库记录成增加机构,修改机构

小弟很是迷茫,希望大神们不吝赐教,最好有点详细的代码。

------解决方案--------------------
假设楼主的Log类实例为log

 try {

       result=pjp.proceed();
       log.info(+"方法执行成功");
  } catch (Exception e) {
     log.error();
 }