首页 > 其他分享 >SpringBoot 面试常见问答总结(一)

SpringBoot 面试常见问答总结(一)

时间:2024-10-22 13:21:33浏览次数:3  
标签:SpringBoot YAML Spring 配置 Boot 面试 注解 问答

1. 什么是 Spring Boot?

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

2. 为什么要用SpringBoot?

快速开发,快速整合,配置简化、内嵌服务容器

3. SpringBoot与SpringCloud 区别?

SpringBoot是快速开发的Spring框架,SpringCloud是完整的微服务框架,SpringCloud依赖于SpringBoot。

4. Spring Boot 有哪些优点?

Spring Boot 主要有如下优点:

  • 容易上手,提升开发效率,为 Spring 开发提供一个更快、更简单的开发框架。

  • 开箱即用,远离繁琐的配置。

  • 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。

  • SpringBoot总结就是使编码变简单、配置变简单、部署变简单、监控变简单

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

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:

  • @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。

  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项。

  • @ComponentScan:Spring组件扫描。

6. Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

Spring Boot 支持Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,但是不管是那种日志框架他都支持将配置文件输出到控制台或者文件中。

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

  • 配置变更

  • JDK 版本升级

  • 第三方类库升级

  • 响应式 Spring 编程支持

  • HTTP/2 支持

  • 配置属性绑定

  • 更多改进与加强

8. 运行 Spring Boot 有哪几种方式?

  • 打包用命令或者放到容器中运行

  • 使用 Maven/ Gradle 插件运行

  • 直接执行 main 方法运行

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

  • 继承spring-boot-starter-parent项目

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

10. SpringBoot事务的使用?

  • 启动类加上@EnableTransactionManagement注解,开启事务支持(其实默认是开启的)。

  • 在使用事务的public(只有public支持事务)方法(或者类-相当于该类的所有public方法都使用)加上@Transactional注解。

 11. Spring Boot 有哪几种读取配置的方式?

Spring Boot 可以通过@PropertySource@Value@Environment@ConfigurationProperties注解来绑定变量

12. 什么是 JavaConfig?

Spring JavaConfig 是 Spring 社区的产品,Spring 3.0 引入了他,它提供了配置 Spring IOC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:

  • 面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。

  • 一个配置类可以继承另一个,重写它的@Bean 方法等。减少或消除XML配置。

  • 基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。

  • JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。

  • 从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfifig 与 XML 混合匹配是理想的。

  • 类型安全和重构友好。JavaConfig 提供了一种类型安全的方法来配置 Spring容器。

  • 由于 Java5.0 对泛型的支持,

  • 现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。

常用的Java config:

  • @Configuration:在类上写下此注解,表示这个类是配置类

  • @ComponentScan:在配置类上添加@ComponentScan注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的<context:component-scan>

  • @Bean:bean的注入:相当于以前的<bean id=“objectMapper” class=“org.codehaus.jackson.map.ObjectMapper” />

  • @EnableWebMvc:相当于xml的<mvc:annotation-driven >

  • @ImportResource:相当于xml的<import resource="applicationContextcache.xml">

13. SpringBoot的自动配置原理是什么?

主要是Spring Boot的启动类上的核心注解SpringBootApplication注解主配置类,有了这个主配置类启动时就会为SpringBoot开启一个@EnableAutoConfiguration注解自动配置功能。

有了这个EnableAutoConfiguration的话就会:

  • 从配置文件META_INF/Spring.factories加载可能用到的自动配置类
  • 去重,并将exclude和excludeName属性携带的类排除
  • 过滤,将满足条件(@Conditional)的自动配置类返回

14. 如何理解 Spring Boot 配置加载顺序?

  • properties文件;
  • YAML文件;
  • 系统环境变量;
  • 命令行参数;

15. 什么是 YAML?

YAML 是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加结构化,而且更少混淆。可以看出 YAML 具有分层配置数据。

16. YAML 配置的优势在哪里 ?

YAML 现在可以算是非常流行的一种配置文件格式了,无论是前端还是后端,都可以见到 YAML 配置。那么 YAML 配置和传统的 properties 配置相比到底有哪些优势呢?

  • 配置有序,在一些特殊的场景下,配置有序很关键
  • 简洁明了,他还支持数组,数组中的元素可以是基本数据类型也可以是对象
  • 相比 properties 配置文件,YAML 还有一个缺点,就是不支持@PropertySource注解导入自定义的 YAML 配置。

17. Spring Boot 是否可以使用 XML 配置 ?

Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过@ImportResource注解可以引入一个 XML 配置。

18. SpringBoot多数据源事务如何管理?

  • 第一种方式是在service层的@TransactionManager中使用transactionManager指定DataSourceConfig中配置的事务
  • 第二种是使用jta-atomikos实现分布式事务管理

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

  • 在生产中使用HTTPS

  • 使用Snyk检查你的依赖关系

  • 升级到最新版本

  • 启用CSRF保护

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

20. 如何实现 Spring Boot 应用程序的安全性?

为了实现 Spring Boot 的安全性,使用spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter并覆盖其方法。

标签:SpringBoot,YAML,Spring,配置,Boot,面试,注解,问答
From: https://blog.csdn.net/Sunny_Boy0518/article/details/143149036

相关文章

  • 【开源免费】基于SpringBoot+Vue.JS读书笔记共享平台(JAVA毕业设计)
    本文项目编号T029,文末自助获取源码\color{red}{T029,文末自助获取源码}......
  • 【开源免费】基于SpringBoot+Vue.JS母婴商城系统 (JAVA毕业设计)
    本文项目编号T030,文末自助获取源码\color{red}{T030,文末自助获取源码}......
  • SpringBoot框架下个人理财系统的设计与实现
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理个人理财系统的相关信息成为必然。开发合适的个人理财系统,可以方便管理人员对个人理财系统......
  • 个人理财新助手:SpringBoot驱动的财务管理系统
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理个人理财系统的相关信息成为必然。开发合适的个人理财系统,可以方便管理人员对个人理财系统......
  • SpringBoot框架下宠物用品交易网站的构建与实现
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了在线宠物用品交易网站的开发全过程。通过分析在线宠物用品交易网站管理的不足,创建了一个计算机管理在线宠物用品交易网站的方案。文章介绍了在线宠物用品交易网站的系统分......
  • Hutool在SpringBoot中的使用
    Hutool介绍Hutool是一个功能丰富的Java工具集库,它封装了许多常用的工具类,使开发者能够更加简洁高效地编写代码。Hutool涵盖了很多日常开发中常见的工具,包括但不限于字符串处理、日期时间、文件操作、加解密、HTTP请求、缓存、Excel操作、JSON处理、二维码生成等。Huto......
  • 挑战中,Java面试题复习第4天,坚持就是胜利。
    码城|第4期一分钟吃透Java面试题【悟空非空也】 ......
  • JAVA开源项目 基于Vue和SpringBoot母婴商城系统
    本文项目编号T030,文末自助获取源码\color{red}{T030,文末自助获取源码}......
  • Springboot计算机毕业设计程序设计竞赛团队管理系统72262
    Springboot计算机毕业设计程本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:团队信息,用户,团队风采,团队成员,团队项目,项目反馈,团队任务开题报告内容一、研究背景与意义随着信息技术的飞速发展......
  • Springboot计算机毕业设计城市轨道交通线路查询p2df3
    Springboot计算机毕业设计城本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,站点信息,交通线路,周边类型,周边信息开题报告内容一、研究背景随着城市化进程的加速,城市轨道交通系统作为城市交......