阿里云code地址:http://code.taobao.org/svn/customSpringMvc/

下面是框架使用说明:

整个请求完整流程:

首先,容器启动 执行上下文监听器期,完成bean的实例化,类字段的注入,请求路径的关联(关联bean的map的key值和controller的method),完成aop代理的使用的回调实例

然后,浏览器/移动端请求过来,DispatherServlet拦截到请求执行拦截器,其次获取到requestUrl然后获取到相应的controller和待执行的controller的方法,然后通过反射执行method,完成请求。

1.实例化bean的注解(拥有这些注解就会实例化同时也会注入包含字段):

@Controller(类似于springmvc的controller):

这个是请求过来执行完拦截器后调用的类

@Interceptor拦截器注解:

如果要实现拦截器功能,就必须在类上面加入注解@Interceptor,并且指定注解的值order(拦截器执行的顺序),同时实现抽象类AbstractInterceptor的handlerInterceptor()方法来执行相关的业务

@AutoWire注入字段注解:

如果在类的字段上加入了这个注解,那么容器初始化的时候就会给类的实例初始化对应值(保存在程序上下文当中)

@RequestMapping映射路径注解

该注解可以注释在类和方法上,注解属性value指定了映射路径。程序在初始化的时候 保存了路径和bean名字映射map及路径和method映射map

@Service

实例化类实例注解,注解属性name指定了实例名称,并把name属性或者类名做key  实例做value保存在map当中

2.aop动态代理注解:

@AfterAdvice、@BeforeAdvice、ThrowingAdvice前置通知注解:

如果要实现前置通知功能,就必须在类上加入注解@AfterAdvice,并指定注解的callBackVal值(当存在多个aop功能的时候,这个值用来标记执行哪个通知),同时要实现接口Advice,并且实现对应方法

@JDKProxy代理注解:

在类上加入这个注解表明这个类要被jdk动态代理,需要实现aop功能。并且指定该注解的callBackVal用来关联哪些通知。

注:只用这个注解必须是该类有实现的接口

@CGLibProxy代理注解:

在类上加入这个注解表明这个类要被cglib动态代理,需要实现aop功能。并且指定该注解的callBackVal用来关联哪些通知。