如题所说,我在用 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的时候就有值 请问下大虾们怎么回事