专栏名称: 码农小胖哥
技术公众号:码农小胖哥
目录
相关文章推荐
51好读  ›  专栏  ›  码农小胖哥

Spring Boot 必问面试题精选

码农小胖哥  · 掘金  ·  · 2019-10-14 11:59

正文

阅读 26

Spring Boot 必问面试题精选

1.简介

自Spring Boot诞生以来,就引起了业界轰动,目前越来越多的公司技术选型选择拥抱Spring Boot。所以Spring Boot也成为面试必问的问题之一。接下来小胖哥总结了一些来开阔你的思路。

2.问题

好了接下来直奔主题说说经常在面试中问到的 Spring Boot 面试题

Q1。Spring和Spring Boot有什么区别?

Spring Framework提供了多种功能,使Web应用程序的开发更加容易。这些功能包括依赖注入,数据绑定,面向方面的编程,数据访问等等。随着Spring社区的壮大,Spring慢慢变得越来越复杂,不再像开始宣称的那么轻量级。 开发应用程序的配置量越来越大令开发者头疼。这时Spring Boot就派上用场了 - 它采用“约定大于配置”的思想简化了配置,对Spring提供的功能和配置而且将一些功能抽象成为“Starter”开箱即用、按需引用。极大地简化了开发。

Q2。我们如何使用Maven设置Spring Boot应用程序?

我们可以像在任何其他库中一样在Maven项目中包含Spring Boot。但是,最好的方法是从 spring-boot-starter-parent 项目继承并声明依赖于Spring Boot启动器。这样做可以让我们的项目重用Spring Boot的默认设置。继承 spring-boot-starter-parent 项目非常简单 - 我们只需要在 pom.xml 中指定一个 parent 元素:

file

我们可以在Maven 中央仓库找到最新版本的 spring-boot-starter-parent 。上面的方式很方便但是并不一定符合实际需要。例如公司要求所有项目依赖构建从一个标准BOM开始,我们就不能按上面的方式进行。在这种情况下,我们可以进行如下引用:

file

然后在 dependencies 标签下引用Spring Boot 的starters 就行了。

Q3。Spring boot 中的starter是什么?

依赖管理对于项目至关重要。当项目足够复杂时,管理依赖项可能会变成一场噩梦,因为涉及的组件太多了。这就是Spring Boot 的 starter 就派上用场了。每个starter都可以为我们提供所需要的Spring技术的一站式服务。并且以一致的方式传递和管理其他所需的依赖关系。所有官方starter都在 org.springframework.boot 组下,其名称以 spring-boot-starter- 开头 。非官方的starter的名称在前,如 mybatis-spring-boot-starter 。这种命名模式使得查找启动器变得很容易,尤其是在使用支持按名称搜索依赖关系的IDE时。但是这个不是绝对的,有些开发者可能不遵从这种契约。目前大概有超过 50 种官方 starter 。最常用的是:

  • spring-boot-starter : 核心启动器,包括自动配置支持,日志记录和YAML
  • spring-boot-starter-aop : 使用 Spring AOP AspectJ 进行面向方面编程的初学者
  • spring-boot-starter-data-jpa : 使用 Spring Data JPA Hibernate 的启动器
  • spring-boot-starter-jdbc : 用于将 JDBC HikariCP 连接池一起使用的启动器
  • spring-boot-starter-security : 使用 Spring Security 的启动器
  • spring-boot-starter-test : 用于测试 Spring Boot 应用程序的启动器
  • spring-boot-starter-web : 使用 Spring MVC 构建Web的启动器,包括 RESTful 应用程序

其他starter 可去 spring.io 查询

Q4。如何禁用特定的自动配置?

如果我们要禁用特定的自动配置,我们可以使用 @EnableAutoConfiguration 注解的 exclude 属性来指示它。如下禁用了数据源自动配置 DataSourceAutoConfiguration

file

如果我们使用 @SpringBootApplication 注解。 它具有 @EnableAutoConfiguration 作为元注解 - 我们同样可以配置exclude属性来禁用自动配置:

file

我们还可以使用 spring.autoconfigure.exclude 环境属性禁用自动配置。在 application.properties (也可以是 application.yml )配置文件设置如下也可以达到同样的目的:

file

Q5。如何注册自定义自动配置?

要注册自动配置类,我们必须在 META-INF / spring.factories 文件的 EnableAutoConfiguration 键(key)下列出其完全限定名称,如果是多个按照以下风格配置:

file

如果我们使用Maven构建一个项目,那么该文件应放在 resources / META-INF 目录中。

Q6。如何根据不同的条件来加载bean?

使用 @Conditional 系列注解。 例如 @ConditionalOnMissingBean 。此注释的最显着属性是:

  • value :要检查的bean类型
  • name :要检查的bean的名称
    放置在使用 @Bean 装饰的方法上时,目标类型默认为方法的返回类型:

file







请到「今天看啥」查看全文