1. 程式人生 > >原 spring boot 攔截器中無法注入serivce

原 spring boot 攔截器中無法注入serivce

摘要 最近在專案中用攔截器去攔截使用者操作,並對操作日誌進行記錄, 在攔截器中記錄日誌時呼叫service 層 的save方法,發現service為null ,通過 @Autowired private LogService logService;這種方式無法注入;解決辦法看以下程式碼。
@Configuration 
public class OptPermissionHandlerInterceptor extends HandlerInterceptorAdapter { 
  private Logger logger = LoggerFactory.getLogger(OptPermissionHandlerInterceptor.class); 

  @Autowired
private OperatorLogService operatorLogService; //這裡使用@Autowired無法注入成功 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (true) { return true; } else { String result = "當前登入使用者無許可權!"
; response.getOutputStream().write(result.getBytes()); response.setStatus(HttpStatus.OK.value()); return false; } } @SuppressWarnings("rawtypes") @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception
{ try { if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; String beanName = handlerMethod.getBean().getClass().toString(); String methodName = handlerMethod.getMethod().getName(); String uri = request.getRequestURI(); String remoteAddr = request.getRemoteAddr(); String sessionId = request.getSession().getId(); OperatorLog optLog = new OperatorLog(); optLog.setBeanName(beanName); optLog.setMethodName(methodName); optLog.setRemoteAddr(remoteAddr); optLog.setSessionId(sessionId); optLog.setUri(uri); if (operatorLogService == null) {//解決service為null無法注入問題 System.out.println("operatorLogService is null!!!"); BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); operatorLogService = (OperatorLogService) factory.getBean("operatorLogService"); } operatorLogService.saveOperatorLog(optLog); } } catch (Exception e) { logger.error("", e); } } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }