SpringBoot设计初衷
基于Servlet开发Java web
核心开发步骤
传统的java web的开发,都是基于javax-servlet api, 原始的api 倾入性太强需要继承HttpServet接口并实现对应的doGet/doPost方法 , 然后再web.xml中配置对应的servet url 拦截, 最后将项目打成war包,部署到servlet容器中。
- 在pom中引入各种jar包(i.e. javax-servlet api)
- 写一个类继承HttpServet接口并实现对应的doGet/doPost方法
- 在web.xml中配置各种编写的servlet
- 打成对应的war包部署到tomcat中启动.
知识拓展:
Tomcat 是基于 Servlet 规范实现的 Servlet 容器,顾名思义,可以存放多个 Servlet 组件,故 Tomcat 中可以部署多个 Java Web 应用,每个应用由多个 Servlet 组件组成。
痛点:
- 代码耦合 通过继承HttpServlet类,导致业务代码与java组件耦合
- 手动配置太多,维护性太差(web.xml)
- 部署困难,得单独部署一个tomcat进程,且不能对每一个java应用程序设置环境参数
基于SpringMVC 开发Java web
核心开发步骤
- 在pom中引入各种需要的jar包
- 在web.xml中配置DispatcherServlet,
- 写Controller 用@RequestMapping 在controller中处理不同的业务逻辑请求,降低了开发难度,减少了业务代码与java组件的耦合
- 打成对应的war包部署到tomcat中启动.
痛点
- 维护性差: 虽然 解决了servlet方法太过底层, 但是 SpringMVC 框架自身又引入了配置文件,如 Spring IOC 容器的配置文件applicationContext.xml,SpringMVC 的配置文件 dispatcher-servlet.xml,或者基于注解和 Java 类的应用配置等 。 可选的配置方式太多,导致项目中比较混乱
- 兼容性不好,各个第三方jar包可能不兼容
- 部署困难,和servlet开发一样都需要打成war然后部署servlet容器中运行
基于SpringBoot开发Java web
核心开发步骤
- 在pom中引入spring-boot-starter-web
- 编写对应的controller
- 直接打成jar包, 本地run main方法 或打成jar包用java -jar来运行 或部署到外部的tomact
优势
- 帮助开发者快速整合第三方框架, 原理是 将各个模块封装成各种自定义的starter包,自动配置 开箱即用
- 去除各种xml配置, 采用纯注解的方式.
- 不需要外部容器, 内嵌servlet 引擎, 原理是 使用java语言创建tomcat服务器, 然后将本地的class文件交给tomcat来加载 Tomcat cat =new Tomcat().
- 提供对应的监控Actuator .
思考
SpringBoot怎么实现的自动配置,做到开箱即用的呢? 我们在下一章节中从源码角度深入了解.