Springboot3.3.5 启动流程之 tomcat启动流程介绍

在文章 Springboot3.3.5 启动流程(源码分析) 中讲到 应用上下文(applicationContext)刷新(refresh)时使用模板方法 onRefresh 创建了 Web Server.
在这里插入图片描述

本文将详细介绍 ServletWebServer — Embedded tomcat 的启动流程。

首先,通过 ServletWebServerApplicationContext 的方法 getWebServerFactory 获取当前配置的唯一的 ServletWebServerFactory(它的实现有三个:JettyServletWebServerFactoryTomcatServletWebServerFactoryUndertowServletWebServerFactory), 本示例中是 TomcatServletWebServerFactory
在这里插入图片描述

第二步,直接通过 TomcatServletWebServerFactory 的方法获取 getWebServer 启动好的 tomcat 。
getWebServer方法中首先创建 一个 tomcat, 剩下的就是对tomcat 的配置。
在这里插入图片描述

prepareContext

prepareContext 的核心功能就是配置 TomcatEmbeddedContextTomcatEmbeddedContext 通过 Host 和 tomcat 建立关系:
在这里插入图片描述

Spring Boot 3.3.5 集成 Spring Security 可实现用户认证和授权等功能。以下是使用和配置的相关内容: ### 集成 Spring Security 和 Spring Data JPA 实现用户认证和基于数据库的授权机制 首先要创建项目并添加项目依赖,这可以实现整合 Spring Security 和 Spring Data JPA 来完成用户认证和基于数据库的授权机制 [^1]。 ### 集成 Spring Security + JWT 1. **准备工作**:引入相关依赖,设计表结构,生成基本代码,配置白名单,进行 JWT 配置,包括配置参数如 jwt 密码、过期时间等,自定义未授权和未登录结果返回,创建 JWT 过滤器,改写 SecurityConfig,进行登录验证,启动查看接口未登录和登录情况 [^2]。 2. **注销支持**:当包含 spring - boot - starter - security 依赖或使用 @EnableWebSecurity 注解时,Spring Security 将添加其注销支持,并默认响应 GET /logout 和 POST /logout [^3]。 ### 版本匹配问题 在 Spring Boot 3 以上版本使用 Spring Security 时,要注意版本匹配问题。若版本不匹配可能导致效果无法体现,需将依赖修改为适配 Spring Boot 3 版本的依赖 [^4]。 ### 示例代码 以下是一个简单的 Spring Boot 3 集成 Spring Security 的示例配置: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .and() .httpBasic(); return http.build(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值