什么是 Spring Boot ?22道面试问题,提升你的spring boot

         1、什么是 Spring Boot?

2、Spring Boot 有哪些优点?

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

4、什么是 JavaConfig?

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

6、你如何理解 Spring Boot 配置加载顺序?

7、什么是 YAML?

8、YAML 配置的优势在哪里 ?

9、Spring Boot 是否可以使用 XML 配置 ?

10、如何在自定义端口上运行 Spring Boot 应用程序?

11、您使用了哪些 starter maven 依赖项?

12、如何重新加载SpringBoot上的更改,而无需重新启动服务器?

13、SpringBoot、Spring MVC和, Spring有什么区别? SpringBoot、SpringMVC和,Spring有什么区别?

14、什么是自动配置?

15、什么是SpringBoot Stater ?

16、SpringBoot还提供了其它的哪些Starter ProjectOptions?

17、为什么我们需要spring-boot-maven-plugin?

18、SpringBoot集成mybatis的过程

19、什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

20、什么是 Spring Data?

21、什么是Spring Data REST?

22、为什么我们不建议在实际的应用程序中使用Spring DataRest?


1、什么是 Spring Boot?

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

2、Spring Boot 有哪些优点?

Spring Boot 主要有如下优点:

  1. 容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。

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

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

  4. 没有代码生成,也不需要XML配置。

  5. 避免大量的 Maven 导入和各种版本冲突。

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

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

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

@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源 自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan:Spring组件扫描。

4、什么是 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,不需要任何强制 转换或基于字符串的查找。

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

注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心, @EnableAutoConfiguration 给容器导入META-INF/spring.factories 里定义的自动配置类。 筛选有效的自动配置类。 每一个自动配置类结合对应的 xxxProperties.java 读取配置文件进行自动配置功能

6、你如何理解 Spring Boot 配置加载顺序?

在 Spring Boot 里面,可以使用以下几种方式来加载配置。 1) properties文件; 2) YAML文件; 3) 系统环境变量; 等等……

7、什么是 YAML?

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

8、YAML 配置的优势在哪里 ?

YAML 现在可以算是非常流行的一种配置文件格式了,无论是前端还是后端,都可以见到 YAML 配置。 那么 YAML 配置和传统的 properties 配置相比到底有哪些优势呢? 1. 配置有序,在一些特殊的场景下,配置有序很关键 2. 支持数组,数组中的元素可以是基本数据类型也可以是对象 3. 简洁 相比 properties 配置文件,YAML 还有一个缺点,就是不支持 @PropertySource 注解导入自定义的 YAML 配置。

9、Spring Boot 是否可以使用 XML 配置 ?

Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过 @ImportResource 注解可以引入一个 XML 配置。 spring boot 核心配置文件是什么? bootstrap.properties 和 application.properties 有何区别 ? 单纯做 Spring Boot 开发,可能不太容易遇到 bootstrap.properties 配置文 件,但是在结合 Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载一些远程配置文件的时 侯。 spring boot 核心的两个配置文件: bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加载的,比 applicaton 优先 加载,配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring Cloud Config 或者 Nacos 中会 用到它。且 boostrap 里面的属性不 能被覆盖; application (. yml 或者 . properties): 由ApplicatonContext 加载,用于 spring boot 项目的自动化配 置。

10、如何在自定义端口上运行 Spring Boot 应用程序?

为了在自定义端口上运行 Spring Boot 应用程序,您可以在 application.properties 中指定端口。server.port = 8090

11、您使用了哪些 starter maven 依赖项?

新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 spring-boot-starter-parent ,spring-boot-starter-parent 主要有如下作用: 1. 定义了 Java 编译版本为 1.8 。 2. 使用 UTF-8 格式编码。 3. 继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖, 所以我们在写依赖时才不需要写版本号。 4. 执行打包操作的配置。 5. 自动化的资源过滤。 6. 自动化的插件配置。 1 2 org.springframework.boot 3 spring-boot-devtools 4 7. 针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的 配置文件,例如 applicationdev.properties 和 application-dev.yml。

12、如何重新加载SpringBoot上的更改,而无需重新启动服务器?

这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。

SpringBoot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。

开发人员可以重新加载SpringBoot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。SpringBoot在它的第一个版本时没有这个功能。

这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。

org.s pringframework.boot

spring-boot-devtools

true

13、SpringBoot、Spring MVC和, Spring有什么区别? SpringBoot、SpringMVC和,Spring有什么区别?

1、Spring

Spring最重要的特征是依赖注入.所有SpringModules不是依赖注入就是IOC控制反转。
当我们恰当的使用DI或者是CIOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。
2.Spring MvC
Spring MVC提供了―种分离式的方法来开发 Web应用。通过运用像
DispatcherServelet,MoudIAndView 和 ViewResolver等—些简单的概念,开发Web应用将会变的非常简单。
3、SpringBoot
Spring和 SpringMVC的问题在于需要配置大量的参数。
SpringBoot)通过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序,SpringBoot提供了—些非功能性特征。

14、什么是自动配置?

Spring和SpringMVC的问题在于需要配置大量的参数。
我们能否带来更多的智能?当一个 MVC JAR添加到应用程序中的时候,我们能否自动配置—些beans?
Spring查看(CLASSPATH上可用的框架)已存在的应用程序的配置。在此基础上, SpringBoot提供了配置应用程序和框架所需要的基本配置。这就是自动配置。

15、什么是SpringBoot Stater ?

启动器是一套方便的依赖没描述符,它可以放在自己的程序中。你可以一站式的获取你所需要的Spring和相关技术,而不需要依赖描述符的通过示例代码搜索和复制黏贴的负载。
例如,如果你想使用Sping和JPA访问数据库,只需要你的项目包含spring-boot-starter-data-jpa依赖项,你就可以完美进行。

16、SpringBoot还提供了其它的哪些Starter ProjectOptions?

SpringBoot)也提供了其它的启动器项目包括,包括用于开发特定类型应用程序的典型依赖项。
1、spring-boot starter-web-services-SOAP Web Services;
2.spring-boot-starter-web -.web和 RESTful应用程序;
3.spring-boot-starter-test -单元测试和集成测试;
4、spring-boot-starter-jdbc - 传统的JDBC;
5.spring-boot-starter-hateoas - 为服务添加HATEOAS 功能;
6、spring-boot-starter-security - 使用SpringSecurity进行身份验证和授权;
7.spring-boot-starter-data-jpa带有Hibeernate 的 Spring Data JPA;
8、spring-boot-starter-data-rest-使用Spring Data REST公布简单的REST 服务;


17、为什么我们需要spring-boot-maven-plugin?

spring-boot-maven-plugin 提供了一些像 jar一样打包或者运行应用程序的命令。

1、spring-boot:run运行你的 SpringBooty 应用程序。
2、spring-boot: repackage重新打包你的 jar包或者是war包使其可执行
3.spring-boot: start和spring-boot: stop管理SpringBoot应用程序的生命周期(也可以说是为了集成测试)。
4、spring-boot:build-info生成执行器可以使用的构造信息。


18、SpringBoot集成mybatis的过程

添加 mybatis 的starter maven依赖

<dependency>
<groupld> org.mybatis.spring.boote/groupld;
<artifactld> mybatis-spring-boot-starter </artifactld;version>1.3.2</version>
</dependency>

在mybatis的接国中添加@Mapper注解
在application.yml配置数据源信息


19、什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

思考一下在你的虚拟机上部署应用程序需要些什么。
第一步:安装Java
第二步:安装Web或者是应用程序的服务器(Tomat/Wbesphere/Weblogic等等)
第三步:部署应用程序war包
如果我们想简化这些步骤,应该如何做呢?
让我们来思考如何使服务器成为应用程序的—部分?
你只需要一个安装了Java的虚拟机,就可以直接在上面部署应用程序了,
这个想法是嵌入式服务器的起源。
当我们创建一个可以部署的应用程序的时候,我们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。
例如,对于会个SpringBoot应用程序来说,你可以生成一个包含EmbeddedTomcat的应用程序 jar。你就可以想运行正常Java应用程序一样来运行cweb应用程序了。
嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如, tomcat.jar)。
 

20、什么是 Spring Data?

Spring Data的使命是在保证底层数据存储特殊性的前提下,为数据访问提供一个熟悉的,一致性的,基于Spring的编程模型。这使得使用数据访问技术,关系数据库和非关系数据库,map-reduce框架以及基于云的数据服务变得很容易。
为了让它更简单一些,Spring Data l提供了不受底层数据源限制的_ Abstractions接口。
你可以定义一简单的库,用来插入,更新,删除和检索代办事项,而不需要编写大量的代码。

 

21、什么是Spring Data REST?

Spring Data TEST可以用来关于Spring 数据库的HATEOAS RESTful资源。
不需要写太多代码,我们可以关于Spring 数据库的 RESTful API。
 

POST:
URL:http: //localhost: 8080/
Use Header:Content-Type:Type:application/jsonRequest Content

22、为什么我们不建议在实际的应用程序中使用Spring DataRest?

我们认为Spring Data Rest很适合快速原型制造长在大型应用程序中使用需要谨慎。
通过Spring Data REST你可以把你的数据实体作为_RESTful服务直接。
当你设计RESTful服务器的时候,最佳实践表明,你的接口应该考虑到两件重要的事情:
你的模型范围。
你的客户。
通过With Spring Data REST,你不需要再考虑这两个方面,只需要作为TEST服务实体。
这就是为什么我们建议使用Spring Data Rest在快速原型构造上面,或者作为项目的初始解决方法。对于完整演变项目来说,这并不是一个好的注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白鱼塘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值