【八股文】9 Spring Boot

本文介绍了SpringBoot的基本概念,包括其简化配置、一键启动和自动配置特性,探讨了其优缺点,并详细讲解了核心配置文件、启动方式、依赖管理和常见技术整合。此外,还涵盖了SpringBoot与Spring、SpringMVC的区别,以及如何部署、安全和跨域处理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 1. 什么是 Spring Boot?

Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KVw3n5lC-1656562718579)(./FILES/spring-boot.md/bf03759d.png)]

Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。

2. SpringBoot有哪些优点?
  1. 独立运行
    Spring Boot 而且内嵌了各种 servlet 容器,Tomcat、Jetty 等,现在不再需要打成war 包部署到容器中,Spring Boot 只要打成一个可执行的 jar 包就能独立运行,所有的依赖包都在一个 jar 包内。
  2. 简化配置
    spring-boot-starter-web 启动器自动依赖其他组件,简少了 maven 的配置。
  3. 自动配置
    Spring Boot 能根据当前类路径下的类、jar 包来自动配置 bean,如添加一个 spring-boot-starter-web 启动器就能拥有 web 的功能,无需其他配置。
  4. 无代码生成和XML配置
    Spring Boot 配置过程中无代码生成,也无需 XML 配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是 Spring4.x 的核心功能之一。
  5. 避免大量的Maven导入和各种版本冲突
  6. 应用监控
    Spring Boot 提供一系列端点可以监控服务及应用,做健康检测。
3. SpringBoot有哪些缺点?

任何技术都是有优缺点的,没有银弹,解决一切问题,不留任何小尾巴

SpringBoot优点概括起来就是简化:简化编码,简化配置,简化部署,简化监控,简化依赖坐标导入,简化整合其他技术….

SpringBoot的缺点是入门简单精通难,各种强大的功能封装的太好了,内部原理比较难得参透!再就是用多了容易产生依赖,就像嗑药似的,用了就离不开了;SpringBoot一旦出了错误,由于内部封装比较深,部分错误调试难度比一般Spring应用程序要大很多!

当然完全不必纠结与SpringBoot的缺点,毕竟SpringBoot的优点太突出了。

4. Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。

application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。

bootstrap 配置文件有以下几个应用场景。

使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
一些固定的不能被覆盖的属性;
一些加密/解密的场景;

5. Spring Boot 的配置文件有哪几种格式?它们有什么区别?

.properties 和 .yml,它们的区别主要是书写格式不同。

1).properties

app.user.name = javastack

2).yml

app: user: name: javastack

另外,.yml 格式不支持 @PropertySource 注解导入配置。

6. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

主要组合包含了以下 3 个注解:

@SpringBootConfiguration:
组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:
打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:
Spring组件扫描。

7. 开启 Spring Boot 特性有哪几种方式?

1)继承spring-boot-starter-parent项目

2)导入spring-boot-dependencies项目依赖

详细介绍启动方式

Spring Boot依赖

使用Spring Boot很简单,先添加基础依赖包,有以下两种方式

  1. 继承spring-boot-starter-parent项目
<parent>
    <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.6.RELEASE</version>
</parent>
  1. 导入spring-boot-dependencies项目依赖
<dependencyManagement>
    <dependencies>        
        <dependency>            
            <groupId>org.springframework.boot</groupId>            
            <artifactId>spring-boot-dependencies</artifactId>            
            <version>1.5.6.RELEASE</version>  
<think>好的,我现在需要处理用户关于Spring Boot常见面试题及基础知识的问题。首先,用户已经提供了几个引用内容,我需要仔细阅读这些引用内容,从中提取关键信息来构建答案。 首先,引用[3]提到Spring Boot是由Pivotal团队开发的,用于简化Spring应用的创建、开发和部署,具有自动配置功能,支持多种开源框架,并已成为基于Spring开发的事实标准。这可以作为概述部分的基础。 接下来,引用[1]讨论了Starters的命名规则,官方启动器以spring-boot-starter-开头,而第三方则不能,例如mybatis-spring-boot-starter。这可能需要作为面试题中的一个问题,比如“Spring Boot的Starters命名规范是什么?” 引用[4]提到Spring Boot可以内嵌Tomcat,不需要独立容器,可以打包为jar或war运行。这应该涉及内嵌服务器和打包方式的问题,也是一个常见的面试点。 引用[2]关于热部署,提到了Spring Loaded和Spring Boot DevTools两种方式,但Spring Loaded已较少使用。这可以作为热部署的问题,需要解释这两种方法以及推荐使用DevTools。 接下来,我需要根据这些引用内容,结合常见的Spring Boot面试题,组织成一个结构清晰的回答。可能的题目包括: 1. 什么是Spring Boot?它的优点是什么? 2. Starters的命名规范是怎样的? 3. 如何实现热部署? 4. Spring Boot如何内嵌服务器? 5. 自动配置原理是什么? 6. Spring Boot的配置文件有哪些? 需要确保每个问题的答案正确引用对应的引用内容,并在末尾添加引用标识。同时,按照用户要求,使用中文回答,行内公式使用$...$,独立公式用$$...$$(虽然这里可能用不上数学公式,但需要注意格式)。然后生成相关问题,确保问题与内容相关,并且覆盖主要知识点。 此外,要检查是否有其他常见的Spring Boot面试题未被引用内容覆盖,但用户提供的引用可能有限,所以可能需要仅基于现有引用组织问题。例如,自动配置原理可能在引用[3]中提到的自动配置功能,但需要进一步解释,可能需要结合外部知识,但用户要求尽量保证回答真实可靠,因此应主要依据提供的引用。 现在,开始组织答案,确保每个问题对应引用中的信息,并正确标注引用来源。例如,在回答Starters命名规范时,引用[1];在热部署时引用[2];内嵌服务器引用[4];概述和优点引用[3]。 最后,生成相关问题,如Spring BootSpring Cloud的关系、配置文件的类型、如何打包应用等,这些问题可能需要结合已有的引用,但若引用中没有足够信息,可能需要避免。根据用户提供的引用,引用[4]提到了Spring BootSpring Cloud,所以相关问题可以包括这一点。</think>### Spring Boot 常见面试问题及答案 #### 1. **什么是Spring Boot?它的优点是什么?** Spring Boot是由Pivotal团队提供的框架,用于简化Spring应用的创建、开发和部署。其核心优点包括: - **自动配置**:通过条件注解自动配置依赖,减少手动配置的复杂性。 - **内嵌服务器**(如Tomcat),无需独立部署容器,可直接打包为可执行的JAR或WAR文件[^4]。 - **Starters依赖管理**:通过预定义的依赖模块快速集成第三方库[^3]。 - **提升开发效率**:支持热部署、简化Maven/Gradle配置等。 #### 2. **Spring Boot的Starters命名规范是什么?** - **官方Starters**:以`spring-boot-starter-`开头,例如`spring-boot-starter-web`。 - **第三方Starters**:禁止以`spring-boot`开头,通常采用`{框架名}-spring-boot-starter`的格式,例如`mybatis-spring-boot-starter`[^1]。 #### 3. **如何实现Spring Boot的热部署?** - **Spring Boot DevTools**:通过在`pom.xml`中添加依赖实现自动重启应用,适合开发环境[^2]。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> ``` - **Spring Loaded**:通过JVM代理修改字节码实现热部署,但已逐渐被弃用[^2]。 #### 4. **Spring Boot如何内嵌服务器?** Spring Boot的JAR包中内置了Tomcat、Jetty等服务器依赖。运行时直接创建服务器实例,无需外部容器。若需部署到独立Tomcat,可改为打包成WAR文件。 #### 5. **Spring Boot的自动配置原理是什么?** 基于条件注解(如`@ConditionalOnClass`)和`spring.factories`文件,在启动时扫描类路径,动态加载符合条件的配置类。例如,当类路径存在`DataSource`时,自动配置数据库连接[^3]。 #### 6. **Spring Boot的配置文件有哪些?** - **`application.properties`**:键值对格式,例如`server.port=8080`。 - **`application.yml`**:层级结构更清晰,例如: ```yaml server: port: 8080 ``` 配置文件支持多环境(如`application-dev.yml`),通过`spring.profiles.active`激活。 --- ### 相关问题 1. Spring BootSpring Cloud有什么关系? 2. 如何自定义Spring Boot的启动类? 3. 如何在Spring Boot中实现多数据源配置? 4. Spring Boot的监控模块(如Actuator)有哪些功能? 5. Spring Boot如何集成数据库访问框架(如MyBatis)? : Spring Boot官方与第三方Starters命名规则 [^2]: Spring Boot热部署的实现方式 : Spring Boot的核心功能与优势 : Spring Boot内嵌服务器与打包方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值