spring是如何初始化的?如何处理请求?
以前对于spring 都是停留在会用的层面,闲下来 参照资料 写了一个精简版的spring 理解了一下 其中的具体内容。
总结如下:(自己看着总结的,如果哪里不对 请大家指出)
spring初始化
1. 拿到spring配置文件,获取扫描包名字(自动扫包注解)
2.递归扫描包下文件,存入list
对象实例化
3.通过反射实例化 含有 service和Controller 注解的对象 存入map
对象注入
3.取出map中对象 中 所有注入的对象 通过 Field.set("需要注入的实例",“注入的实例”)
4初始化请求链,遍历map 对象的所有方法 , 拼接url 存入 map(url,method)。
spring处理请求
5当请求到达前端控制器时:
5.1 解析uri 获得项目名 replace 获得 请求url
5.2 通过请求rul 在map中获取对应的mehtod
5.3 通过Controller 名称获取Controller 对象
5.4 通过反射 执行 method.invoke(Controller , new Object[] { req, resp, null });
以上是对spring ioc的一点理解。