秋招Day17 - Spring - Spring Boot

发布于:2025-07-24 ⋅ 阅读:(13) ⋅ 点赞:(0)

介绍一下Spring Boot,有哪些优点?

Spring Boot提供了一套默认配置,通过约定大于配置帮我们快速搭建Spring项目骨架。

以前的Spring开发需要配置大量的xml文件,大量第三方jar包依赖还要手动引入。Spring Boot只需要引入一个Starter和@SpringBootApplication注解就可以搞定。

优点有:

  • Spring Boot内嵌了Tomcat、Jetty、Undertow等容器,直接运行jar包就能启动
  • Spring Boot内置了Starter和自动配置,省去了大量手动配置的工作。比如如果项目中添加了 spring-boot-starter-web,Spring Boot 会自动引入并配置 Tomcat 和 Spring MVC
  • Spring Boot内置了ActuatorDevTools,便于调试和监控。

Spring Boot常用注解有哪些?

  1. @SpringBootApplication:Spring Boot 应用的入口,用在启动类上。
  2. 还有一些 Spring 框架本身的注解,比如 @Component@RestController@Service@ConfigurationProperties@Transactional 等。

Spring Boot自动配置原理了解吗?

Spring Boot 会根据项目类路径中存在的 Jar 包、自定义的 Bean 以及各种配置属性,自动推断并创建、配置应用程序所需的各种组件,而无需手动编写大量的配置代码。

在 Spring Boot 中,开启自动配置的注解是@EnableAutoConfiguration它会扫描所有自动配置类

Spring Boot 为了进一步简化,直接通过 @SpringBootApplication 注解一步搞定,该注解包含了 @EnableAutoConfiguration 注解。

main 类启动的时候,Spring Boot 会加载所有自动装配类到内存,但不会立即生效。需要条件注册@Condition评估所有条件都满足后,该配置类才会被Spring容器完全处理,其内部定义的Bean才会被创建并注册到IoC容器中。

如何自定义一个Spring Boot Starter

第一步,创建一个新的 Maven 项目,例如命名为 my-spring-boot-starter。在 pom.xml 文件中添加必要的依赖和配置。

第二步,创建一个简单的服务类 MyService.java

第三步,创建一个配置属性类 MyStarterProperties.java

第四步,在 src/main/java 下创建一个自动配置类,比如 MyServiceAutoConfiguration.java:(通常是 autoconfigure 包下)。

第五步,在 src/main/resources/META-INF 目录下创建 spring.factories 文件,指明所有自动配置类的路径

第六步,使用 Maven 打包这个项目

第七步,在其他的 Spring Boot 项目中,通过 Maven 来添加这个自定义的 Starter 依赖,并通过 application.properties 配置MyService的配置信息

Spring Boot Starter的原理了解吗?

Spring Boot Starter 主要通过起步依赖和自动配置机制来简化项目的构建和配置过程。

起步依赖是 Spring Boot 提供的一组预定义依赖项,它们将一组相关的库和模块打包在一起。比如 spring-boot-starter-web 就包含了 Spring MVC、Tomcat 和 Jackson 等依赖。

自动配置机制是 Spring Boot 的核心特性,通过自动扫描类路径下的类、资源文件和配置文件自动创建和配置应用程序所需的 Bean 和组件。

比如有了 spring-boot-starter-web,我们开发者就不需要再手动配置 Tomcat、Spring MVC 等,Spring Boot 会自动帮我们完成这些工作。

Spring Boot的启动原理了解吗?

一、启动类准备阶段

加载启动类:SpringBoot启动时,会在当前工作目录下扫描带有@SpringBootApplication注解标识的类,并把这个类作为应用程序的入口点。

二、配置加载阶段

加载配置文件:SpringBoot会自动扫描当前项目的resources目录,并加载其中的application.propertiesapplication.yml等配置文件。加载数据库配置参数,日志级别等。

配置环境:创建和配置Environment,该对象包含了应用程序的运行环境信息。

三、初始化ApplicationContext

创建ApplicationContext:根据应用程序类型创建相应的ApplicationContext实例

加载Bean:扫描当前项目中的所有Bean,将它们注册并创建到ApplicationContext中。扫描并处理Starter的自动配置类,根据类路径下的依赖情况和当前应用Bean的配置情况自动配置并创建相应的Bean

四、启动内嵌的Web容器

如果当前项目是一个Web应用,SpringBoot会根据配置信息自动创建Web容器,并将Spring容器注册到Web容器

五、启动应用程序

根据之前创建好的Spring容器以及Web服务器,启动相应的线程进行服务处理

六、监听应用程序的状态

SpringBoot会监听应用程序的状态,并根据需要进行相应的操作。例如,当应用程序退出时,它会打印出详细的日志信息,并将应用程序的上下文环境恢复到初始状态。

七、发布事件

在启动的不同阶段,SpringBoot会发布各种事件,如started()、ready()等,允许开发者在特定的时间点执行自定义的逻辑

八、停止计时并打印日志

StopWatch停止计时,并打印出整个启动过程所花费的时间。

了解@SpringBootApplication注解吗?

@SpringBootApplication是 Spring Boot 的核心注解,经常用于主类上,作为项目启动入口的标识。它是一个组合注解:

  • @SpringBootConfiguration:继承自 @Configuration,标注该类是一个配置类,相当于一个 Spring 配置文件。
  • @EnableAutoConfiguration:告诉 Spring Boot 根据 pom.xml 中添加的依赖自动配置项目。例如,如果 spring-boot-starter-web 依赖被添加到项目中,Spring Boot 会自动配置 Tomcat 和 Spring MVC。
  • @ComponentScan:扫描当前包及其子包下被@Component@Service@Controller@Repository 注解标记的类,并注册为 Spring Bean。

为什么Spring Boot启动的时候能够找到主类上的@SpringBootApplication注解?

启动的时候执行main方法中的run方法,run方法接受两个参数,主应用类、命令行参数。

主应用类也就是main方法属于的类,也就是启动类,SpringBoot会通过反射机制检查这个主应用类,看看上面有没有@SpringBootApplication注解

SpringBoot默认的包扫描路径是什么

启动类所在包及其子包下的所有组件

Spring Boot和Spring MVC区别

Spring MVC是Spring框架的一个模块,提供了Model-View-Controller的开发模式

Spring Boot通过引入Starter依赖并处理自动配置类,实现了约定优于配置的特性,spring-boot-starter-web中集成了Spring MVC的相关依赖,运行时环境也内嵌了Web服务器,所以Spring Boot项目启动后会自动根据类路径下的依赖和当前项目的Bean配置,将Spring MVC的相关配置和组件都自动创建好快速的开发一个Spring MVC的Web项目。

Spring Boot和Spring有什么区别?

Spring Boot在Spring框架的基础上简化了开发、配置和部署,可以帮助我们快速搭建 Spring 项目的骨架,提高生产效率。

特性 Spring Framework Spring Boot
目的 提供企业级的开发工具和库 简化 Spring 应用的开发、配置和部署
配置方式 主要通过 XML 和注解等手动配置 提供开箱即用的自动配置
启动和运行 需要打成 war 包到 Tomcat 等容器下运行 已嵌入Tomcat等容器,打包成 JAR 文件直接运行
依赖管理 手动添加和管理依赖 使用 spring-boot-starter 简化依赖管理

 


网站公告

今日签到

点亮在社区的每一天
去签到