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 高德地图点聚合中Marker的位置无法实时更新
    • ¥15 DIFY API Endpoint 问题。
    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办