每日五道java面试题之springboot篇(一)

目录:

  • [第一题. 什么是 Spring Boot?](#第一题. 什么是 Spring Boot?)
  • [第二题. Spring Boot 有哪些优点?](#第二题. Spring Boot 有哪些优点?)
  • [第三题. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?](#第三题. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?)
  • [第四题. 什么是 JavaConfig?](#第四题. 什么是 JavaConfig?)
  • [第五题. Spring Boot 自动配置原理是什么?](#第五题. Spring Boot 自动配置原理是什么?)

第一题. 什么是 Spring Boot?

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

第二题. Spring Boot 有哪些优点?

Spring Boot 主要有如下优点:

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

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

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

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

@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan:Spring组件扫描。

第四题. 什么是 JavaConfig?

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

(1)面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。

(2)减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和Java 之间来回切换。JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfig 与 XML 混合匹配是理想的。

(3)类型安全和重构友好。JavaConfig 提供了一种类型安全的方法来配置 Spring容器。由于 Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。

第五题. Spring Boot 自动配置原理是什么?

注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,

@EnableAutoConfiguration 给容器导入META-INF/spring.factories 里定义的自动配置类。筛选有效的自动配置类。

每一个自动配置类结合对应的 xxxProperties.java 读取配置文件进行自动配置功能

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力

相关推荐
J不A秃V头A5 分钟前
IntelliJ IDEA 中,自动删除无用导包
java·intellij-idea
小_太_阳6 分钟前
idea_卸载与安装
java·ide·intellij-idea
旧故新长8 分钟前
版本控制和idea简体中文教程
java·开发语言·intellij-idea
疯一样的码农8 分钟前
使用 Maven 构建一个简单的 Java 项目
java·开发语言·maven
小_太_阳14 分钟前
idea_常用设置
java·ide·intellij-idea
李昊哲小课16 分钟前
springboot整合hive
大数据·数据仓库·hive·spring boot·后端·数据分析
易风有点疯18 分钟前
Python:序列化
开发语言·python
等什么君!19 分钟前
Servlet细节
java·servlet
Biomamba生信基地33 分钟前
R语言基础| 时间序列分析
开发语言·r语言·kotlin·编程
Promising_GEO34 分钟前
使用R语言绘制简单地图的教程
开发语言·python·r语言