springboot 面试题

本文深入解析SpringBoot的核心概念,包括其优点、配置文件、自动配置原理、目录结构、starter启动器等,帮助开发者快速掌握SpringBoot的关键技术和实践技巧。

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

原博客链接:

https://blog.youkuaiyun.com/zl1zl2zl3/article/details/83715633

 

 

1、什么是springboot?

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

更多springboot详细介绍请看这篇文章《什么是springboot》.

2.为什么使用springboot?

springBoot优点非常多,如:

独立运行

简化配置

自动配置

无代码生成和Xml配置

应用监控

上手容易

。。。

springboot 集这么多优点于一身,还有理由不适用它呢?

3、springboot的核心配置文件有哪几个?它们的区别是什么?

springboot的核心配置文件是和 bootstrap 配置文件

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

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

使用springcloud  config  配置中心时,这时需要在bootstrap    配置文件中添加连接到配置中心得配置属性来加载外部配置中心得配置信息;

一些固定得不能被覆盖得属性;

一些加密/解密得场景;

具体请看这篇文章《springboot得核心配置文件详解》

4、springboot得配置文件有哪几种格式?它们有什么区别?

.properties    app.user.name = javastack

.yml   

app:

    user:

       name: javaStack

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

5.springboot的核心注解是哪个?它主要是由哪几个注解组成的?

启动类上面的注解是@springbootApplication ,它也是springboot的核心注解,主要组合包含了一下三个注解:

@Springbootconfiguration:组合了@configuration注解,实现配置文件的功能。

@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@springbootapplication(exclude ={DataSourceAutoConfiguration.class})

 

 

@componentScan:spring组件扫描。

6、开启springboot特性有哪几种方式?

i 继承了spring-boot-starter-parent 项目

ii  导入spring -boot- dependencies项目依赖

具体请参考这篇文章《springboot开启的两种方式》。

7、springboot需要独立的容器运行吗?

可以不需要,内置了Tomcat/Jetty等容器。

8、运行springboot有哪几种方式?

(1) 打包用命令或者放到容器中运行

(2)用maven/gradle插件运行

(3)直接执行main方法运行

9、spingboot自动配置原理是什么?

注解@EnableAutoConfiguration,@Configuration ,@ConditonalOnClass就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置.

具体看这篇文章《springboot 自动配置原理、实战》

10、spring'Boot得目录结构是怎样的?

这个目录结构是主流及推荐的做法,而在主入类上加上@springbootApplication注解来开启springBoot的各项能力,如自动配置、组件扫描等。具体看这篇文章《Spring Boot 主类及目录结构介绍》。

11、你如何理解springboot中的starters?

starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成spring及其技术,而不需要到处找示例代码和依赖包。如你想使用springJpa访问数据库,加入spring-boot-starters-data-jpa启动器依赖就能使用了。

starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。具体请看这篇文章《springbootstarter启动器》

12、如何在springBoot启动的时候运行一些特定的代码?

可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法,具体请看这篇文章《springBootRunner启动器》

13、springboot有哪几种读取配置的方式?

springBoot 可以通过@PropertySource@Value@Environment@ConfigurationProperties来绑定变量,具体情况看文章《Springboot读取配置的几种方式》

14、springboot支持哪些日志框架?推荐和默认的日志框架是哪个?

SpringBoot支持javaUtilLogging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,springboot将使用Logback作为默认日志框架,具体请看这篇文章《SpringBoot日志集成》。

15、SpringBoot实现热部署有哪几种方式?

主要有两种方式:

spring Loaded

spring-boot-devtools

spring-boot-devtools使用方式可以参考这篇文章《Spring Boot实现热部署》

16、如何理解spiringBoot配置加载顺序?

在springboot里面,可以使用以下几种方式来加载配置.

(1) properties文件;

(2)YAML文件;

(3)系统环境变量;

(4)命令行参数;

等等.......................

具体请看这篇文章《Springboot配置加载顺序详解》。

17、Spring Boot 如何定义多套不同环境配置?

提供多套配置文件,如:

运行时指定具体的配置文件,具体请看这篇文章《Spring Boot Profiles 不同环境配置》。

18、Spring Boot  可以兼容老Spring 项目吗,如何做?

可以兼容,使用@ImportResource注解导入老Spring项目配置文件。

19、保护Spring Boot 应用有哪些方法?

在生产中使用https

使用Snyk检查你的依赖关系

升级到最新版本

启用CSRF保护

使用内容安全策略防止XSS攻击

。。。。。。。

。。

更多文章请看这篇文章《10种保护Spring Boot 应用的绝佳方法》。

 

20、Spring Boot 2.X 有什么新特性?与1.x有什么区别?

首先是配置发生了变更

以及jdk版本的升级

第三方类库的升级

响应式Spring编程支持

HTTP/2支持

配置属性绑定

更多改进与加强。。。。。。。

具体请看这篇文章《Spring Boot 2.X 新特性总结及迁移指南》。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### Spring Boot 面试题及相关常见问题 #### 什么是 Spring BootSpring BootSpring 开源组织下的子项目,旨在提供一种更简单的方式来构建独立运行的应用程序。它通过自动配置机制减少了繁琐的手动配置工作,并集成了多种常用的开发工具和框架[^2]。 #### Spring Boot 的主要特点是什么? Spring Boot 提供了一种一站式的解决方案来简化 Spring 的使用难度。它的核心优势在于减少复杂配置的工作量,同时提供了丰富的启动器(Starters),使开发者能够更快地上手并完成项目的搭建[^2]。 #### 如何将传统 Spring Framework 项目迁移到 Spring Boot? 尽管有人认为迁移过程可能较为困难且耗时,但实际上可以通过继承 `spring-boot-starter-parent` 或者引入 `spring-boot-dependencies` 来实现兼容性支持。这种方式允许逐步替换原有组件而不必一次性重构整个项目结构[^3]。 #### Spring BootSpring Cloud 的区别在哪里? 虽然两者都隶属于 Spring 生态体系的一部,但是它们的目标领域有所不同: - **Spring Boot** 主要关注单体应用以及微服务的基础架构建设; - 而 **Spring Cloud** 则专注于布式系统的治理和服务间通信等问题解决方法论上的扩展功能模块集合[^1]。 #### 启用 Spring Boot 特性的途径有哪些? 启用 Spring Boot 功能通常有以下几种方式: 1. 继承官方推荐父级 POM 文件——即设置 Maven 构建文件中的 `<parent>` 标签指向 `spring-boot-starter-parent`; 2. 手动添加依赖管理部到自定义 Parent 中并通过声明形式引用 `spring-boot-dependencies` 工程作为 BOM (Bill Of Materials)[^3]。 以下是简单的代码示例展示如何创建一个基本的 Spring Boot 应用程序: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值