解决spring boot 拦截器中无法注入serivce
2017-09-25 14:25
309 查看
摘要
最近在项目中用拦截器去拦截用户操作,并对操作日志进行记录, 在拦截器中记录日志时调用service 层 的save方法,发现service为null ,通过 @Autowired private LogService logService;这种方式无法注入;解决办法看以下代码。
最近在项目中用拦截器去拦截用户操作,并对操作日志进行记录, 在拦截器中记录日志时调用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 { } }
原文地址:http://blog.csdn.net/yubinpll9110/article/details/51820336
相关文章推荐
- spring boot 拦截器中无法注入serivce
- SpringBoot中拦截器无法注入Bean的解决办法
- 解决Spring Boot 拦截器注入service为空的问题
- 解决Spring Boot 拦截器注入service为空的问题
- 原 spring boot 拦截器中无法注入serivce
- spring boot 拦截器中无法注入serivce
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
- 解决Spring+Quartz无法自动注入bean问题
- 第1章 ssm 整合 quartz (解决了无法注入service问题)
- SpringBoot拦截器中Bean无法注入(转)
- 解决getCurrentSession()spring无法注入SessionFactory的问题
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
- Shiro解决无法注入Service问题(包括Spring MVC和Spring Boot)
- Struts2 自定义拦截器栈后无法得到表单参数之解决办法
- Spring Boot 使用 Spring Security 后无法 POST 提交数据解决方法
- 使用Spring配置shiro时,自定义Realm中属性无法使用注解注入解决办法
- 解决Spring+Quartz无法自动注入bean问题
- android Webview中注入js,用于解决第三方页中出现返回事件window.history.go(-1),无法响应问题
- SSH下Action中无法注入业务bean的解决方法
- 解决spring boot websocket无法注入bean的问题