2 qq 19916577 qq_19916577 于 2015.05.29 13:35 提问

aop 处理日志出错,注入错误

如题所说,我在用 springaop 做日志处理的时候遇到了一个大问题,就是在使用aop的时候能保存日志信息但是当我返回controller的时候注入的service为空

AOP代码
@Aspect
@Component
public class SaveOrpLog {
    // 注入操作的日志service进行保存操作
    @Resource(name = "sys_OperlogServiceImpl")
    private ISys_OperlogService sys_OperlogServiceImpl;

    @SuppressWarnings("unused")
    @Pointcut("execution(public * cn.com.agricom.action.*.save*(..))")
    private void saveControLog() {
    }

    @Around("saveControLog()")
    public Object interceptor(ProceedingJoinPoint pjp) throws Throwable {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getRequest();
        HttpSession session = request.getSession();
        // 读取session中的用户
        Sys_Userinfo user = (Sys_Userinfo) session.getAttribute("user");
        String ip = request.getRemoteAddr();
        // *========控制台输出=========*//
        System.out.println("=====前置通知开始=====");
        System.out.println("请求方法:"
                + (pjp.getTarget().getClass().getName() + "."
                        + pjp.getSignature().getName() + "()"));
        //String des = getControllerMethodDescription(pjp);
    //  System.out.println("方法描述:" + des);
        System.out.println("请求人:" + user.getUserName());
        System.out.println("请求IP:" + ip);
        Sys_Operlog opLog = new Sys_Operlog();
        opLog.setAddTime(new Date());
        opLog.setUserId(user.getId());
        opLog.setOperContent("执行删除操作");
        opLog.setGrade(1);
        sys_OperlogServiceImpl.save(opLog);   //注:  可以正常保存
        System.out.println("=====前置通知结束=====");
        return pjp.proceed();
    }

controller代码
    // 此处为记录AOP拦截Controller记录用户操作
    public String saveSysBeforemovevillage() {
        System.out.println(srcUrl);
        savePhoto(srcUrl);
        System.out.println(sys_BeforemovevillageServiceImpl);
        System.out.println(sys_BeforemovevillageServiceImpl==null);  //得到的为true
        sys_BeforemovevillageServiceImpl.save(sbmv); //  空的对象
        return "addSysBeforemovevillageOk";
    }

不用aop的时候就有值 请问下大虾们怎么回事


Csdn user default icon
上传中...
上传图片
插入图片