qq_19916577 2015-05-29 05:35 采纳率: 0%
浏览 1007

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的时候就有值 请问下大虾们怎么回事


  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机
    • ¥20 程序进入HardFault_Handler
    • ¥15 oracle集群安装出bug
    • ¥15 关于#python#的问题:自动化测试