您的位置:首页 > 编程语言 > Java开发

spring boot 拦截器的实现以及遇到的问题的解决方案

2017-02-24 17:29 627 查看

spring boot拦截器的实现

1、创建拦截器

  创建拦截器,实现HandlerInterceptor接口即可

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor{

@Autowired
private BeanService service ;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
return false;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView)
throws Exception {
// TODO Auto-generated method stub

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub

}

}


2、注册拦截器

  注册拦截器的实现

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

@Bean
MyInterceptor  myInterceptor(){
return new MyInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor()).addPathPatterns("/*");
super.addInterceptors(registry);
super.addInterceptors(registry);
}
}


问题解析

1、bean加载的问题

  在拦截器中注入bean。然后在注册拦截器的时候直接new或者是注入数据的时候会出现拦截器中的bean注册失败的问题,解决方案如MyWebMvcConfigurerAdapter代码片。添加一个方法去做拦截器加载,在方法上使用@bean去进行bean的加载管理即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring springboot