在Spring Boot的web环境中,初始化主要包括以下几个关键步骤:
1. Spring MVC的自动配置
WebMvcAutoConfiguration
: 这是Spring Boot针对Spring MVC的主要自动配置类。它负责设置视图解析器、消息转换器、静态资源处理、拦截器、格式化器等。此配置仅在类路径中检测到Spring MVC相关jar时生效。
2. 嵌入式Web服务器初始化
-
WebServerFactoryCustomizerBeanPostProcessor
: 这个后处理器用于自定义嵌入式Web服务器的配置,比如端口、上下文路径等。Spring Boot会自动检测可用的服务器(如Tomcat、Jetty、Undertow),并根据配置进行初始化。 -
ServletWebServerFactory
: 这个接口定义了创建和配置嵌入式Servlet容器的工厂方法。具体实现如TomcatServletWebServerFactory
会根据配置创建Tomcat实例。
3. DispatcherServlet初始化
-
DispatcherServletAutoConfiguration
: 负责注册和配置DispatcherServlet
,它是Spring MVC的核心前端控制器,负责接收HTTP请求,分发给对应的控制器处理。 -
DispatcherServletRegistrationBean
: 用于注册DispatcherServlet
到Servlet容器中,配置其名称、映射路径等。
4. Spring Boot Actuator
- 如果启用了Actuator,
EndpointWebMvcAutoConfiguration
会配置一系列端点(如health、info),使得这些端点可以通过HTTP访问。
5. 静态资源处理
WebMvcConfigurerAdapter
: 通过这个类,Spring Boot配置了对静态资源(如CSS、JavaScript、图片)的处理,包括路径映射、资源位置等。
6. Security自动配置
- 如果项目中包含了Spring Security依赖,
SecurityAutoConfiguration
将会自动配置安全性,比如基本的认证、CSRF保护等。
7. Error Handling
- Spring Boot提供了默认的错误页面和JSON错误响应处理,这部分配置通常在
ErrorMvcAutoConfiguration
中完成。
8. 初始化流程
在启动过程中,Spring Boot会检查类路径上的jar,根据发现的jar自动配置Web环境。具体流程大致如下:
- 初始化
SpringApplication
,读取配置。 - 加载自动配置类,根据条件判断哪些配置应当生效。
- 初始化嵌入式Web服务器,并配置其属性。
- 注册
DispatcherServlet
,配置其映射路径。 - 初始化Spring MVC的相关组件,如视图解析器、消息转换器等。
- 配置静态资源处理、安全策略、错误处理等。
- 启动Web服务器,开始监听HTTP请求。
整个Web环境的初始化过程充分体现了Spring Boot的约定优于配置原则,大部分配置都是自动完成的,但同时也提供了足够的灵活性来覆盖默认配置。