Spring自定义接口,不定期更新。。。

前言

思来想去,不知道要写啥,写一些怎么使用spring,怎么使用mybatis这样的东西觉得没必要(其实是不想写那么多文字而且网上一搜一大丢)。所以后期的博文应该也不会写这类东西。除非。。。。。我真的不知道写什么,或者太忙,没空写了,大家就会看到这种东西。那下面我也写的东西很简单。就是在日常编码过程中用到的spring的自定义接口,工具。把平时用到的跟大家总结一下,有空再多写几个实用的~~

Spring自定义接口

HandlerExceptionResolver

这是spring统一处理异常的接口。这个接口也有自己的默认实现类,也就是这个AbstractHandlerExceptionResolver,这个是抽象类,实现了HandlerExceptionResolver接口resolveException。源码如下:
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,
			Object handler, Exception ex) {

		if (shouldApplyTo(request, handler)) {
			// Log exception, both at debug log level and at warn level, if desired.
			if (logger.isDebugEnabled()) {
				logger.debug("Resolving exception from handler [" + handler + "]: " + ex);
			}
			logException(ex, request);
			prepareResponse(ex, response);
			return doResolveException(request, response, handler, ex);
		}
		else {
			return null;
		}
	}
看到源码,可以发现。它限制了日志等级的输出。只有debug以及以更高级别的日志输出。所以这种限制在实际中可能不太实用。
所以有必要自定义自己的异常处理类。只实现上面的接口即可。具体的做法就各种搜索去吧 再见

HandlerInterceptorAdapter

这个应该是用的最多的了,拦截器,做一些必要的参数处理,权限校验,登陆验证等等,会节省点很多代码。
但用这个也要小心,考虑到死循环的情况。文章是实在太短了大哭讲一下使用的步骤吧,很简单。源码如下:
<pre name="code" class="java">public abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor {

	/**
	 * 在进入controller之前处理
	 */
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
	    throws Exception {
		return true;
	}

	/**
	 * 在进入controller处理完之后,返回数据到页面之前做处理 
	 */
	public void postHandle(
			HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
			throws Exception {
	}

	/**
	 * 在完成整个请求之后,页面也渲染好了,就会调用这个方法
	 */
	public void afterCompletion(
			HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
	}

	/**
	 *这个是异步请求的时候用到的(我没用过),有兴趣可以去使用一下
	 */
	public void afterConcurrentHandlingStarted(
			HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
	}

}


 
  
 第一步:更具自己需要,实现上面的对应的接口。这个很好理解吧。。。 
第二步:配置拦截器的范围,这是必须的,不然怎么知道要拦截哪个url呀,例子如下:
<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/**"/>
			<bean class="com.xiaosha.wap.common.interceptor.AuthMethodInterceptor"/>
		</mvc:interceptor>
		<mvc:interceptor>
			<mvc:mapping path="/**"/>
			<bean class="com.xiaosha.wap.interceptor.WeChatAuthorizeInterceptor"/>
		</mvc:interceptor>
	</mvc:interceptors>

第三步:赶紧写个controller实验一下呀 偷笑就是这么简单。

ApplicationListener

这个接口是监听器,一旦发生某个事件或动作就会触发某个事件。比如。。。。我都想不出来了抓狂
要用到的时候肯定会有用的(哈哈,我至今都没有用到这个。。。),这个接口也非常简单,只有一个实现一个方法即可,
在配置文件配置一下bean基本上就OK了。源码如下:
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {

	/**
	 * Handle an application event.
	 * @param event the event to respond to
	 */
	void onApplicationEvent(E event);

}
看!就一个方法,超级简单。

总结

Spring有很多好用和简单的自定义接口和类。我也是最近才开始关注这块的。大部分人也就知道Spring的mvc,注解。
Spring提供了那些你想得到和想不到的接口,想要真正搞懂所有的接口,也是个大工程呢,这周这篇实在短呢。哭

文章虽短,价值不短(自我安慰中。。。。。。)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值