springboot出现的原因二---作为web的后端服务一站式整合器
java最核心的功能,就是为业务赋能
直接讲就是利用tomcat
这里先了解一下背景信息
前端通过axios发送一个http请求包
后端的tomcat收到这请求包,解析成java能听的懂的语言
然后java中开启一个线程
处理数据,整理成一个对象
然后在把java对象,转换装到http请求包里,返回给前端。
这样,用户的基本需求,前端提供页面,后端提供数据就完成了。
这个是一个基本的业务流程
对于我们后端程序员,在这里面要做什么呢
1.下载tomcat服务器这个软件包
2.在idea里面文件包里写代码,引入springmvc,spring依赖等
3.把文件夹代码打成war包,部署到tomcat上
这个中间流程是很繁琐的
springboot的核心,就是让程序员的精力都在业务上,不要在配置上,消耗过多的精力
于是当我们在springboot里的maven里引入这个依赖
| 技术需求 | 额外依赖 |
|---|---|
| 开发 Web 应用 | spring-boot-starter-web(会内嵌 Tomcat 并自动配置 Spring MVC) |
就不用管tomcat的配置层面了
需要配置,就直接在yaml里配置就好了
当然,这里作为程序员,也要理解tomcat的机制,和springmvc的机制
下面是对上面内容会更专业细致的梳理
上面讲的是思路
现有思路,才有具体的
一、传统 Web 开发(Spring MVC + Tomcat)的痛点
你提到的流程是标准的 Java Web 服务交互:
- 前端通过
axios发 HTTP 请求。 - Tomcat 接收请求,解析成 Java 能处理的
HttpServletRequest。 - Spring MVC 根据
@Controller、@RequestMapping等注解,调用业务逻辑。 - 业务层处理后返回 Java 对象(如
User),再通过HttpServletResponse转成 JSON/XML 返回前端。
但在开发、部署环节,程序员要做很多"与环境打交道"的事:
- 下载并配置 Tomcat(端口、路径、JVM 参数等)。
- 在 IDE 中手动引入 Spring、Spring MVC 依赖,还要注意版本兼容性。
- 配置 web.xml(或 Java Config)来注册 DispatcherServlet、字符编码过滤器等。
- 把项目打成 WAR 包 ,再复制到 Tomcat 的
webapps目录,启动 Tomcat 才能访问。
这些步骤与业务逻辑无关,却消耗了大量精力,而且不同项目之间配置基本雷同,属于"重复造轮子"。
二、Spring Boot 如何解决
Spring Boot 的哲学就是"约定大于配置",它把你提到的繁琐工作自动化了:
| 你的痛点 | Spring Boot 的做法 |
|---|---|
| 下载、配置 Tomcat | 引入 spring-boot-starter-web 后,自动内嵌 Tomcat(或 Jetty/Undertow),无需手动安装。 |
| 手动引入 Spring MVC 依赖并配置 | Starter 帮你引入所有必要的依赖,并且自动配置 DispatcherServlet、静态资源路径、消息转换器等。 |
| 打包成 WAR 再部署 | 默认打包成可执行的 JAR,内嵌 Servlet 容器,直接 java -jar app.jar 就跑起来了。 |
| 复杂的 XML 或 Config 类 | 绝大部分配置都有合理默认值,你只需要在 application.yml 里覆盖需要改的部分(如端口、数据库连接)。 |
核心就是 spring-boot-starter-web 这一个依赖,它做了三件大事:
- 引入 Spring MVC 和 Jackson(JSON 处理)。
- 引入 Tomcat 内嵌包。
- 自动配置所有 Web 开发的常用组件。
三、需要注意:简化不等于不学习
正如你最后强调的:"作为程序员,也要理解 Tomcat 的机制和 Spring MVC 的机制"。Spring Boot 隐藏了复杂性,但生产环境调优、排查问题时,你依然需要知道:
- Tomcat 的线程池配置(
server.tomcat.threads.max等)如何影响并发能力。 - Spring MVC 的 DispatcherServlet 处理流程、拦截器、参数解析原理。
- 自动配置是如何通过
@EnableAutoConfiguration和META-INF/spring.factories生效的。
Spring Boot 让你从"配置泥土"里解放出来,专注于"种庄稼",但你不能完全不知道泥土的特性。