springV1








从web.xml 开始 web容器 --> ioc容器(注册式-单例)


定位 加载 注入
1.ServletConfig---对应的web.xml-- 可以拿到里面配置的spring主配置位置文件 application.xml,--值
2.扫描 上面的之,即spring配置的类--包路径-文件路径-- 解出类名保存
3.根据上面的类名,反射,容器初始化,放入ioc容器里 。
过滤实例指定注解的类。Class.forName(className); 默认类名首字母小写;反射得到的字节码实例 可以拿到注解的value值;
注入的是接口。根据类型赋值,一个接口多个实现类。key一样
字节码实例可以拿到该实例的所有接口信息。属性信息。

4. 初始化web容器的--handMapping 容器--- @controller 上有 url,谁有requestMapping,找到它。类上的路径 拼上 方法上的路径。保存url与方法的对应关系。
spring V1 从MVC的 DispatchServlet 的inint的方法开始,那么
DispatchServlet 的inint 是谁调用的??
(新手必记)
- 直接调用者:Servlet 容器(Tomcat/Jetty)调用
GenericServlet的init(ServletConfig)方法,这是 Servlet 规范的强制要求; - 间接执行者:Spring 通过继承链将初始化逻辑传递到
DispatcherServlet的initStrategies(),完成 MVC 核心组件初始化; - 核心区别:
DispatcherServlet没有重写 Servlet 规范的init(),而是通过 Spring 封装的onRefresh()完成自身初始化,本质是 “容器触发规范方法,Spring 接管扩展逻辑”。
简单记:Tomcat 是 “启动按钮”,按了 Servlet 规范的
init() 按钮,Spring 顺着继承链把初始化逻辑传递到 DispatcherServlet,最终完成 MVC 核心组件的初始化。补充:SpringBoot 中的特殊情况
在 SpringBoot 中,没有
web.xml,DispatcherServlet 由 DispatcherServletAutoConfiguration 自动注册,但其
init() 调用逻辑完全一致 —— 最终还是由嵌入式 Tomcat 容器触发 init(ServletConfig) 方法。

一个字段属性前面可以加多个注解

sprin的Bean 是线程安全的吗?

一次请求,一次会话,单例,多例

浙公网安备 33010602011771号