前言
我们在controller层经常使用@RequestMapping注解控制器方法,那么我们在实际开发中是否可以使用自定义的注解简化开发流程呢?要解决这个问题首先需要了解spring mvc的实现原理,具体可以参考博主的这篇博客Spring源码分析——SpringMVC实现
简单的说,一个Http请求会被mvc框架包装成一个HandlerExecutionChain对象,而这个对象中包含了一系列的过滤器(interceptor)和控制器(handler)。我们所要做的就是获取到这个handler,然后获取到handler上自定义的注解信息,然后通过注解处理器处理这些信息进行相应的处理,这个过程可以放在spring-mvc的过滤器中来做,当然也可以根据业务的实际情况放在任何可以获取HandlerExecutionChain对象的地方来做(实际上获取HandlerExecutionChain对象需要HttpServeletRequest)。
式例代码
一个自定义注解
package com.netease.edu.web.annotation;
@java.lang.annotation.Target({
java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE })
@java