zoukankan      html  css  js  c++  java
  • spring拦截器中使用spring的自动注入

      需要在spring的拦截器中使用自定义的服务,这要就设计到将服务注入到拦截器中。网上看的情况有两种:

      1、

     1 @Configuration 
     2 public class OptPermissionHandlerInterceptor extends HandlerInterceptorAdapter { 
     3   private Logger logger = LoggerFactory.getLogger(OptPermissionHandlerInterceptor.class); 
     4 
     5   @Autowired 
     6   private OperatorLogService operatorLogService; //这里使用@Autowired无法注入成功 
     7 
     8   @Override 
     9   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws      Exception { 
    10         if (true) { 
    11             return true; 
    12         } else { 
    13             String result = "当前登录用户无权限!"; 
    14             response.getOutputStream().write(result.getBytes()); 
    15             response.setStatus(HttpStatus.OK.value()); 
    16             return false; 
    17         } 
    18   } 
    19 
    20   @SuppressWarnings("rawtypes") 
    21   @Override 
    22   public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 
    23     try { 
    24       if (handler instanceof HandlerMethod) { 
    25            HandlerMethod handlerMethod = (HandlerMethod) handler; 
    26            String beanName = handlerMethod.getBean().getClass().toString(); 
    27            String methodName = handlerMethod.getMethod().getName(); 
    28            String uri = request.getRequestURI(); 
    29            String remoteAddr = request.getRemoteAddr(); 
    30            String sessionId = request.getSession().getId(); 
    31 
    32            OperatorLog optLog = new OperatorLog(); 
    33            optLog.setBeanName(beanName); 
    34            optLog.setMethodName(methodName); 
    35            optLog.setRemoteAddr(remoteAddr); 
    36            optLog.setSessionId(sessionId); 
    37            optLog.setUri(uri); 
    38 
    39       if (operatorLogService == null) {//解决service为null无法注入问题 
    40          System.out.println("operatorLogService is null!!!"); 
    41          BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); 
    42          operatorLogService = (OperatorLogService) factory.getBean("operatorLogService"); 
    43       } 
    44       operatorLogService.saveOperatorLog(optLog); 
    45      } 
    46    } catch (Exception e) { 
    47        logger.error("", e); 
    48    } 
    49   } 
    50   
    51   @Override 
    52   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, 
    53       Exception ex) throws Exception {
    54 
    55   } 
    56 
    57 }

      2、

     1 @Override
     2     public void addInterceptors(InterceptorRegistry registry) {
     3         registry.addInterceptor(sessionInterceptor())
     4                 .addPathPatterns("/**")
     5                 .excludePathPatterns( "/push/**");
     6         super.addInterceptors(registry);
     7     }
     8 
     9 @Bean
    10     public SessionInterceptor sessionInterceptor() {
    11         return new SessionInterceptor();
    12     }

      第二种的方式中 sessionInterceptor类中也可以使用:@Configuration,总之就是需要让spring进行管理。

  • 相关阅读:
    mysql-索引与优化
    sql优化
    PHP高并发
    MySQL 数据类型
    ERROR 2013 (HY000): Lost connection to MySQL server
    建模各阶段以及相关UML构造笔记
    Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发
    Code Complete 笔记—— 第一章
    Laravel使用笔记 —— migration
    本地xdebug调试搭建 Laravel+homestead+phpstorm
  • 原文地址:https://www.cnblogs.com/lcngu/p/8822432.html
Copyright © 2011-2022 走看看