Spring Boot(补档)


什么是 Spring Boot

Spring Boot 是 Spring 开源组织下的子项目,简化了 Spring的开发,省去繁重的xml文件配置,提供了各种启动器(starter),使开发者能快速上手,更加专注业务开发,提高开发效率。

Spring Boot 有哪些优点

  1. 容易上手,提升开发效率,为 Spring 开发提供一个更快、更简单的开发框架。
  2. 开箱即用(指在pom.xml文件中加入需要的依赖包),远离繁琐的配置。
  3. 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。
  4. SpringBoot总结就是使编码变简单、配置变简单、部署变简单、监控变简单等

Spring Boot常用注解

  1. @SpringBootApplication:该注解是Spring Boot项目的入口注解,用于标识一个类是Spring Boot的主配置类。是Spring Boot的核心注解,由@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan 三个注解组合而成
  2. @SpringBootConfiguration : 与@Configuration注解的功能一致,被标注的类等于在Spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个Spring的上下文环境
  3. @EnableAutoConfiguration : SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置
  4. ComponentScan : 组件扫描,自动扫描和装配Bean。标识扫描路径,因为默认是没有配置实际扫描路径,所以SpringBoot扫描的路径是启动类所在的当前⽬录
  5. @RestController:该注解用于创建RESTful风格的Controller,相当于@Controller和@ResponseBody的组合。
  6. @GetMapping/@PostMapping:这两个注解用于处理HTTP GET/POST请求,根据请求路径匹配到相应的处理方法。
  7. @PathVariable:该注解配合@RequestMapping使用,用于获取URL路径中的参数值。
  8. @RequestParam:该注解也配合@RequestMapping使用,用于获取请求参数的值。
  9. @Autowired:该注解用于自动装配一个Bean,Spring容器会自动找到合适的Bean进行注入。
  10. @ConfigurationProperties:该注解用于将配置文件中的属性值注入到Java Bean中。
  11. @Component:该注解用于将一个普通的Java类定义为一个Bean,使其能够被Spring容器管理。
  12. @SpringBootTest:该注解用于测试Spring Boot应用程序,可以模拟出完整的Web服务接口供测试调用。

Spring Boot自动装配的过程

Spring Boot通过@EnableAutoConfiguration注解开启自动配置

通过SpringFactoriesLoader扫描autoconfigure包下的META-INF/spring.factories中所有路径下的类,并通过反射实例化成一个个的配置类并注入到Spring容器中,从而实现了自动装配

Spring Boot启动流程

  • 首先,SpringBoot会读取配置文件与启动类,配置文件指定了项目的各种配置信息,启动类是应用程序的入口。
  • 然后,SpringBoot会使用Spring框架初始化Spring容器,包含创建bean实例、依赖注入等操作。
  • 接着,SpringBoot会开启自动配置功能,扫描项目中的类,自动注册bean,以便于可以方便地使用。
  • 在完成了自动配置后,SpringBoot会启动内嵌的Web服务器,比如Tomcat或Jetty,在Web服务器上部署应用程序。
  • 最后,SpringBoot会启动应用程序本身,启动相应的线程进行服务处理。

如何理解 Spring Boot 中的 Starter

在 Spring Boot 中,Starter 是一种特殊的依赖包,用于简化和快速启动特定功能或技术栈的应用程序开发。它提供了一组预配置的依赖项和默认配置,以便开发人员可以更轻松地集成和使用特定的功能。

starter就是定义⼀个starter的jar包,写⼀个@Configuration配置类、将这些bean定义在⾥⾯,然后在starter包的META-INF/spring.factories中写⼊该配置类,springboot会按照约定来加载该配置类

开发⼈员只需要将相应的starter包依赖进应⽤,进⾏相应的属性配置(使⽤默认配置时,不需要配置),就可以直接进⾏代码开发,使⽤对应的功能了,⽐如mybatis-spring-boot–starter,spring-boot-starter-redis

Spring Boot是如何启动Tomcat的

在 Spring Boot 中,Tomcat 是默认的嵌入式 Web 服务器。

使用 Spring Boot 创建一个 Web 应用程序时,通常会添加 spring-boot-starter-web 依赖项,会自动引入 Tomcat 作为嵌入式 Web 服务器的实现。

下面是 Spring Boot 如何启动 Tomcat 的简要过程:

  1. 在启动应用程序时,Spring Boot 会自动在类路径上查找并加载适当的 Tomcat 类。
  2. Spring Boot 根据内置的默认配置创建一个 Tomcat 实例,并对其进行必要的配置。
  3. Tomcat 实例会创建一个基于线程池的 Connector,用于监听传入的 HTTP 请求。
  4. Spring Boot 根据应用程序配置(如端口号)设置 Connector 的属性。
  5. Spring Boot 将 Web 应用程序的 WAR 文件或可执行 JAR 文件部署到 Tomcat 实例中。
  6. Tomcat 启动并开始监听指定端口上的请求。
  7. 当收到 HTTP 请求时,Tomcat 调用 Spring Boot 中的 DispatcherServlet 处理请求,并将其分派给相应的控制器。
  8. 控制器处理请求并生成响应,然后返回给 Tomcat。
  9. Tomcat 将响应发送回客户端。

Tomcat和Servlet

Tomcat(全称为Apache Tomcat)是一个开源的、轻量级的、独立的Java Web应用服务器。它实现了Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)等相关技术规范,并提供了一个运行和管理这些Web技术的环境。

Servlet 是 Java Web 开发中的一种技术,用于处理来自客户端的请求并生成相应的响应。它是基于 Java 的服务器端组件,主要运行在 Servlet 容器(如 Tomcat)中。

Servlet 可以接收客户端发送的请求,执行一些逻辑处理,并生成动态的网页内容作为响应返回给客户端。

Servlet 主要用于处理 HTTP 请求,包括 GET、POST 等方法。开发者可以通过覆写 Servlet 中对应的方法,如 doGet()doPost() 方法,在其中编写处理请求的业务逻辑。

Tomcat 和 Servlet 之间的关系可以理解为:

  1. Servlet 规范:Servlet 规范是 Java Enterprise Edition (Java EE) 的一部分,定义了开发基于 Java 的 Web 应用程序的标准。它规定了 Servlet 是如何编写和运行的,以及与容器进行交互的方式。
  2. Tomcat 的角色:Tomcat 充当了 Servlet 容器的角色,它实现了 Servlet 规范并提供了一个运行和管理 Servlet 的环境。Tomcat 负责加载、实例化和管理 Servlet,并在收到客户端请求时将请求转发给适当的 Servlet 进行处理。
  3. 部署 Servlet:通过将自己编写的 Servlet 部署到 Tomcat 中,Tomcat 将负责对 Servlet 进行生命周期管理,包括初始化 Servlet、调用 Servlet 的方法(如 doGet()doPost() 等)处理请求和生成响应,以及销毁 Servlet。

Tomcat 是一个实现了 Servlet 规范的容器,它提供了运行和管理 Servlet 的环境。通过部署 Servlet 到 Tomcat,我们可以利用 Servlet 技术来开发 Java Web 应用程序,并由 Tomcat 在运行时负责管理和执行 Servlet 的相关操作。


文章作者: Aiaa
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Aiaa !
  目录