8、SpringBoot 面试题

文章目录

1、什么是SpringBoot ?

SpringBoot 以约定大于配置核心思想,默认帮我们进行了很多设置,是 Spring开源组织下的子项目,是 Spring 组件一站式解决方案,主要简化了使用 Spring 的难度,简省了繁重的 xml 配置,提供了各种启动器,在运行过程中自定配置,开发者能够快速上手。


2、Spring Boot 有哪些优点?

  • 容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验
  • 开箱即用,远离繁琐的配置
  • 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。
  • 没有代码生成,也不需要XML配置
  • 避免大量的 Maven 导入和各种版本冲突

3、Spring Boot 的配置文件有哪几种格式?

有两种,分别为.properties.yml,其中.yml 格式不支持 @PropertySource 注解导入配置


4、SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?

SpringBoot的核心注解是:@SpringBootApplication

它由三部分组成:

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

5、SpringBoot需要独立的容器运行吗?

可以不需要,因为SpringBoot内置了 Tomcat/ Jetty等容器


6、运行SpringBoot有哪几种方式?

  • 打成jar包用命令或者放到容器中运行
  • Maven/ Gradle 插件运行
  • 直接执行 main 方法运行

7、Spring Boot 自动配置原理是什么?

SpringBoot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。


8、Spring Boot 配置加载顺序?

  • properties文件
  • yaml文件 –可读的数据序列化语言,yaml文件就更加结构化,而且更少混淆
  • 系统环境变量
  • 命令行参数

9、 Spring Security 和 Shiro 各自的优缺点 ?

由于 SpringBoot 官方提供了大量的非常方便的开箱即用的 Starter ,包括 Spring Security 的 Starter ,使得在 SpringBoot 中使用 Spring Security 变得更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是 SpringBoot 项目,一般选择 Spring Security 。当然这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有问题的。Shiro 和 Spring Security 相比,主要有如下一些特点:

  • Spring Security 是一个重量级的安全管理框架;Shiro 则是一个轻量级的安全管理框架
  • Spring Security 概念复杂,配置繁琐;Shiro 概念简单、配置简单
  • Spring Security 功能强大;Shiro 功能简单

10、 你如何理解 SpringBoot 中的 Starters?

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


11、 SpringBoot的特性
  • 帮助开发者快速整合第三方框架(原理maven依赖特性)
  • 完全不需要第三方服务器即可运行,内置了第三方容器(tomcat/jetty/undertom)(原理:tomcat容器使用java开发的)
  • 使用注解的方式来简化xml书写

12、Pom文件中导入的parent有什么作用?
  • 定义Java编译版本为1.8
  • 项目使用 UTF-8编码。
  • 继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
  • 执行打包操作的配置。
  • 自动化的资源过滤。
  • 自动化的插件配置。

13、@SpringBootApplication 有什么作用

用于表示springboot应用程序,代表该类是一个springboot的启动类

@xxxAutoConfiguration有什么作用

自动配置类(xxxAutoConfiguration),给容器中导入这个场景需要的所有组件,并配置好这些组件


15、AutoConfigurationImportSelector 有什么作用
  • 组件的选择器
  • 将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值