spring boot 拦截器的实现以及遇到的问题的解决方案
程序员文章站
2022-03-29 20:01:53
...
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的加载管理即可
推荐阅读
-
Sublime text3 实现C语言编译运行以及过程中可能遇到的问题
-
饿了么仿制过程中遇到的问题以及其解决方案
-
Spring Cloud Finchley.SR1版本遇到的坑以及解决方案
-
详解配置spring-boot-actuator时候遇到的一些小问题
-
spring cloud实现前端跨域问题的解决方案
-
spring cloud实现前端跨域问题的解决方案
-
spring boot实现上传图片并在页面上显示及遇到的问题小结
-
@Autowired 和 @Resource注解, 一个接口有多个实现类的时候Spring注入遇到的问题
-
Vue项目部署在Spring Boot出现页面空白问题的解决方案
-
Spring Boot分布式系统实践【扩展1】shiro+redis实现session共享、simplesession反序列化失败的问题定位及反思改进