写点什么

java 培训:SpringBoot 高频面试考点分享

作者:@零度
  • 2022 年 3 月 11 日
  • 本文字数:1717 字

    阅读完需:约 6 分钟

 1、什么是 SpringBoot?

回答:随着动态语言的流行,Java 的开发显得格外的笨重:繁多的配置,低下的开发效率,复杂的部署流程以及第三方技术集成难度大.

SpringBoot 应运而生.

它使用"习惯优于配置"(项目中存在大量的配置,此外还内置一个习惯性配置,让你无需手动进行配置)的理念让你的项目快速运行起来.使用 SpringBoot 很容易创建一个独立运行(运行 Jar 内嵌 Servlet 容器)准生产级别的基于 Spring 框架的项目,使用 SpringBoot 你可以不用或者只需要很少的 Spring 配置。

追问:SpringBoot 的优缺点?

优点:

  • 快速构建项目

  • 对主流开发框架的无配置集成

  • 项目可独立运行,无需外部依赖 Servlet 容器

  • 提供运行时的应用监控

  • 极大地提高了开发,部署效率

  • 与云计算的天然集成

缺点:

  • 书籍文档较少,且不够深入

  • 版本迭代速度很快,一些模块改动很大。

  • 由于不用自己做配置,报错时很难定位。

  • 网上现成的解决方案比较少

2、介绍一下 @SpringBootApplication 注解,Spring Boot 的自动配置是如何实现的?

回答:@SpringBootApplication:包含了 @SpringBootConfiguration(打开是 @Configuration),@EnableAutoConfiguration,@ComponentScan 注解。

JavaConfig 形式的 Spring Ioc 容器的配置类使用的那个 @Configuration,SpringBoot 社区推荐使用基于 JavaConfig 的配置形式,所以,这里的启动类标注了 @Configuration 之后,本身其实也是一个 IoC 容器的配置类。任何一个标注了 @Configuration 的 Java 类定义都是一个 JavaConfig 配置类。任何一个标注了 @Bean 的方法,其返回值将作为一个 bean 定义注册到 Spring 的 IoC 容器,方法名将默认成该 bean 定义的 id。

@ComponentScan 对应 XML 配置中的元素,@ComponentScan 的功能其实就是自动扫描并加载符合条件的组件(比如 @Component 和 @Repository 等)或者 bean 定义,北京java培训最终将这些 bean 定义加载到 IoC 容器中。我们可以通过 basePackages 等属性来细粒度的定制 @ComponentScan 自动扫描的范围,如果不指定,则默认 Spring 框架实现会从声明 @ComponentScan 所在类的 package 进行扫描。

英文意思就是自动配置,概括一下就是,借助 @Import 的帮助,将所有符合自动配置条件的 bean 定义加载到 IoC 容器。

(里面最关键的是 @Import(EnableAutoConfigurationImportSelector.class),借助 EnableAutoConfigurationImportSelector,@EnableAutoConfiguration 可以帮助 SpringBoot 应用将所有符合条件的 @Configuration 配置都加载到当前 SpringBoot 创建并使用的 IoC 容器。该配置模块的主要使用到了 SpringFactoriesLoader。

SpringFactoriesLoader 为 Spring 工厂加载器,该对象提供了 loadFactoryNames 方法,入参为 factoryClass 和 classLoader 即需要传入工厂类名称和对应的类加载器,方法会根据指定的 classLoader,加载该类加器搜索路径下的指定文件,即 spring.factories 文件,传入的工厂类为接口,而文件中对应的类则是接口的实现类,或最终作为实现类。)



3、什么是 SpringBoot Starters?

和自动配置一样,Spring Boot Starter 的目的也是简化配置,而 Spring Boot Starter 解决的是依赖管理配置复杂的问题,有了它,当我需要构建一个 Web 应用程序时,不必再遍历所有的依赖包,一个一个地添加到项目的依赖管理中,而是只需要一个配置 spring-boot-starter-web, 同理,如果想引入持久化功能,可以配置 spring-boot-starter-data-jpa

4、Spirng Boot 常用的两种配置文件

回答:一个是 properties,另一个是 yaml。

追问:什么是 YAML?YAML 配置的优势在哪里 ?

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

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

5、Spring Boot 加载配置文件的优先级了解么?

SpringBoot 加载配置文件的优先级由高到低如下:

file: ./config/ file: ./ classpath: /config/ classpath: /

SpringBoot 会从这四个位置全部加载主配置文件,高优先级的配置会覆盖低优先级的配置,并且 ,互补配置。

说明: file 就代表主目录下,classpath 代表类路径下,若不懂见下图说明。



文章来源于代码界的小白

用户头像

@零度

关注

关注尚硅谷,轻松学IT 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
java培训:SpringBoot高频面试考点分享_JAVA开发_@零度_InfoQ写作平台