博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot 拦截器、过滤器、监听器、定时器使用
阅读量:7093 次
发布时间:2019-06-28

本文共 6108 字,大约阅读时间需要 20 分钟。

hot3.png

一、application.java中配置@EnableTransactionManagement自动启用事务@SpringBootApplication@MapperScan(basePackages={"com.hxkj.waychat.dao"})@ServletComponentScan拦截器、过滤器、监听器的注解配置二、监听器配置package com.hxkj.waychat.intercept.listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.hxkj.waychat.core.config.Constant;import com.hxkj.waychat.core.utils.PropertiesUtils;@WebListenerpublic class ThymeleafServletContextListener implements ServletContextListener {	private static Logger logger = LoggerFactory.getLogger(ThymeleafServletContextListener.class);		@Override	public void contextDestroyed(ServletContextEvent arg0) {		logger.info("----------:ServletContext销毁");	}	@Override	public void contextInitialized(ServletContextEvent arg0) {		logger.info("----------:ServletContext初始化");		logger.info("----------:baseUrl:"+PropertiesUtils.getPropertiesValue(Constant.BASE_URL)+";fileUrl:"+PropertiesUtils.getPropertiesValue(Constant.FILE_URL));		arg0.getServletContext().setAttribute("baseUrl", PropertiesUtils.getPropertiesValue(Constant.BASE_URL));		arg0.getServletContext().setAttribute("fileUrl", PropertiesUtils.getPropertiesValue(Constant.FILE_URL));	}}三、过滤器配置package com.hxkj.waychat.intercept.fliter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/*@WebFilter(filterName="MyFilter",urlPatterns="/*")*/public class MyFilter implements Filter {	private static Logger logger = LoggerFactory.getLogger(MyFilter.class);		@Override	public void destroy() {		logger.info("----------:过滤器销毁");	}	@Override	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)			throws IOException, ServletException {		logger.info("----------:过滤器执行内容");				arg2.doFilter(arg0, arg1);	}	@Override	public void init(FilterConfig arg0) throws ServletException {		logger.info("----------:过滤器初始化");	}}四、拦截器配置1.spring boot拦截器默认有 HandlerInterceptorAdapterAbstractHandlerMappingUserRoleAuthorizationInterceptorLocaleChangeInterceptorThemeChangeInterceptor2.配置spring mvc的拦截器WebMvcConfigurerAdapter public class WebAppConfig extends WebMvcConfigurerAdapter3.实现添加拦截器方法 public void addInterceptors(InterceptorRegistry registry){}registry.addInterceptor可以通过此方法添加拦截器, 可以是spring提供的或者自己添加的4.实例部分 public class WebAppConfig extends WebMvcConfigurerAdapter{	    public static void main(String[] args) {		SpringApplication.run(WebAppConfig.class, args);	}         /**     * 配置拦截器     * @author lance     * @param registry     */    public void addInterceptors(InterceptorRegistry registry) {    	registry.addInterceptor(new UserSecurityInterceptor()).addPathPatterns("/user/**");	}}UserSecurityInterceptor代码public class UserSecurityInterceptor implements HandlerInterceptor {	@Override	public boolean preHandle(HttpServletRequest request,			HttpServletResponse response, Object handler) throws Exception {                return true;	}	@Override	public void postHandle(HttpServletRequest request,			HttpServletResponse response, Object handler,			ModelAndView modelAndView) throws Exception {	}	@Override	public void afterCompletion(HttpServletRequest request,			HttpServletResponse response, Object handler, Exception ex)			throws Exception {	}}五、定时器使用@Component  public class Scheduler {      private final Logger logger = LoggerFactory.getLogger(this.getClass());            @Scheduled(cron="0 0/1 * * * ?") //每分钟执行一次      public void statusCheck() {              logger.info("每分钟执行一次。开始……");          //statusTask.healthCheck();          logger.info("每分钟执行一次。结束。");      }          @Scheduled(fixedRate=20000)      public void testTasks() {              logger.info("每20秒执行一次。开始……");          //statusTask.healthCheck();          logger.info("每20秒执行一次。结束。");      }    }  六、全局异常处理器使用package com.hxkj.fsslr.controller;import java.io.FileNotFoundException;import javax.lang.model.type.UnknownTypeException;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;import com.hxkj.fsslr.core.utils.PageReturnUtils;/** * @ClassName: GlobalExceptionHandler  * @Description: 全局异常处理 * @author huzhihui_c@qq.com * @date 2016年7月18日 下午1:17:59 */@ControllerAdvicepublic class GlobalExceptionHandler {	private static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);		@ExceptionHandler(value=Exception.class)	@ResponseBody	public Object errorHandler(HttpServletRequest request,Exception e){		logger.info("-----捕获到异常-----");		//ajax请求异常返回		if(null != request.getHeader("X-Requested-With") && "XMLHttpRequest".equals( request.getHeader("X-Requested-With").toString())){			if (e instanceof NullPointerException) {				return PageReturnUtils.formatNormal("", PageReturnUtils.MSG_CODE_111111, PageReturnUtils.MSG_STATE_FALSE, "数据参数传入错误");			} else if (e instanceof FileNotFoundException) {				return PageReturnUtils.formatNormal("", PageReturnUtils.MSG_CODE_111111, PageReturnUtils.MSG_STATE_FALSE, "数据文件上传出错");			} else if (e instanceof ClassNotFoundException) {				return PageReturnUtils.formatNormal("", PageReturnUtils.MSG_CODE_111111, PageReturnUtils.MSG_STATE_FALSE, "系统未找到该jar包");			} else if (e instanceof UnknownTypeException) {				return PageReturnUtils.formatNormal("", PageReturnUtils.MSG_CODE_111111, PageReturnUtils.MSG_STATE_FALSE, "未知错误");			} else{				return PageReturnUtils.formatNormal("", PageReturnUtils.MSG_CODE_111111, PageReturnUtils.MSG_STATE_FALSE, e.toString());			}		}		return PageReturnUtils.formatNormal("", PageReturnUtils.MSG_CODE_111111, PageReturnUtils.MSG_STATE_FALSE, e.toString());	}}

 

转载于:https://my.oschina.net/fellowtraveler/blog/731274

你可能感兴趣的文章
生成随机唯一字加图片-学习笔记
查看>>
centos 6 安装zabbix 3.0
查看>>
iOS开发1:UITextField控件属性
查看>>
iOS网络编程之Socket(客户端)
查看>>
IDEA2017.3.3创建第一个javaweb项目及tomcat部署实战
查看>>
Server系列19:如何审计DNS注册信息的变化?
查看>>
hadoop作业调优参数整理及原理
查看>>
dns的搭建及配置
查看>>
Linux系统性能监控(一)
查看>>
文件的创建
查看>>
IEnumerable VS IList
查看>>
人生规划
查看>>
java后台JSON操作
查看>>
bash相关特性
查看>>
『最长等差数列 线性DP』
查看>>
使用SDWebImage和YYImage下载高分辨率图,导致内存暴增的解决办法
查看>>
【转载】如何将PY文件转成EXE文件
查看>>
我的友情链接
查看>>
RHCS+Oracle配置实战
查看>>
字符串和字符串函数 字符串定义方式
查看>>