我有以下内容:
@Pointcut("execution(* com.shop.controller.OrderController.saveOrder(..))")
public void savingOrder() {
log.info("Saving order details");/**/
}
@Before("savingOrder()")
public void logSavingOrder(JoinPoint joinPoint){
log.info("Saving order");
}
但是,日志永远不会显示。
当我尝试以下操作时:
HttpServletRequest
一切正常。但是,我需要访问SELECT count(*) FROM tbl
--962060;
SELECT count(*)
FROM tbl
WHERE (REGEXP_like(A,'[^0-9]') OR REGEXP_like(B,'[^0-9]') ) ;
--17
SELECT count(*)
FROM tbl
WHERE (REGEXP_like(A,'[0-9]') and REGEXP_like(B,'[0-9]') )
;
--962060
。
关于我做错的任何想法?
答案 0 :(得分:1)
不要将其添加到拦截方法的方法签名中,使用以下方法之一访问拦截方法:
如果bean是请求作用域,您可以自动装配HttpServletRequest,如:
@Component
@Scope("request")
public class Foo {
@Autowired private HttpServletRequest request;
//
}
否则您可以按如下方式获取当前请求:
ServletRequestAttributes sra = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest req = sra.getRequest();
这使用了本地的线程本地。
如果您正在使用Spring MVC,那就是您所需要的一切。如果您没有使用Spring MVC,那么您需要在web.xml中注册RequestContextListener或RequestContextFilter。