前言
思来想去,不知道要写啥,写一些怎么使用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提供了那些你想得到和想不到的接口,想要真正搞懂所有的接口,也是个大工程呢,这周这篇实在短呢。

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