关于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();
}