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 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
    • ¥15 关于#hadoop#的问题