web容器和ioc容器
web容器和ioc容器

IoC容器的生命周期由Web容器控制,但IoC容器内部管理的对象不受Web请求影响。

Web 容器是Web 服务器,管网络请求和Servlet。
IoC 容器是对象工厂,管业务对象和依赖关系。

1. Web容器(如Tomcat、Jetty)
本质:管理Servlet运行环境的服务器。
核心职责:处理HTTP协议、Socket通信、线程池管理。它负责将HTTP请求解析后分发给对应的Servlet,并把响应返回给客户端。
管理对象:Servlet、Filter、Listener、JSP等Web组件。
2. IoC容器(如Spring的ApplicationContext)
本质:Spring框架的核心,管理业务对象(Bean)。
核心职责:控制反转与依赖注入(DI)。它负责创建对象、组装依赖关系,并管理对象的完整生命周期(单例、作用域等)。
管理对象:Service、Dao、数据源、事务管理器等业务层与数据层组件
两者的关系
在Spring Boot等主流架构中,IoC容器通常“寄生”在Web容器内:
Web容器启动时,会创建IoC容器。
对于请求:Web容器接收HTTP请求,通过DispatcherServlet(一个特殊的Servlet)将请求转交给IoC容器中管理的Controller处理。
分工:Web容器负责“门禁与通讯”(解决网络收发),IoC容器负责“业务处理”(解决“谁来处理、怎么处理”)。
init() 是 Servlet 生命周期初始化阶段的核心方法,由 Web 容器(Tomcat) 调用,只执行一次,用于完成加载配置、初始化资源、建立连接等一次性工作。
在 Java Web 里,监听器 → 过滤器 → Servlet 是固定执行顺序,同一类内部再按配置顺序执行。
1. ServletContextListener(项目启动)
2. RequestListener(请求到达)
3. Filter1
4. Filter2
5. Servlet(service/doGet)
6. Filter2(返回)
7. Filter1(返回)
8. RequestListener(请求结束)
9. ServletContextListener(项目关闭)
一个接口多个实现类
接口当key, 多个实现了类就 同一个key了
先扫所scanPackage指定路径下 有文件即类,放到map集合<名字,实例>
再扫每个类的成员变量。反射赋值
//初始化url 和 Method 的一对一对应关系
<路径,方法> 请求路径注解获取路径

升级 --> List handlerMapping





循环依赖



浙公网安备 33010602011771号