35道SpringBoot⾯试题及答案(⼩结)
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为⼀名 Spring Boot 的专家。本⽂精选了三⼗五个常见的Spring Boot知识点,祝你⼀臂之⼒!问题⼀
Spring Boot、Spring MVC 和 Spring 有什么区别?
1、Spring
Spring最重要的特征是依赖注⼊。所有 SpringModules 不是依赖注⼊就是 IOC 控制反转。
当我们恰当的使⽤ DI 或者是 IOC 的时候,我们可以开发松耦合应⽤。松耦合应⽤的单元测试可以很容易的进⾏。
2、Spring MVC
Spring MVC 提供了⼀种分离式的⽅法来开发 Web 应⽤。通过运⽤像 DispatcherServelet,MoudlAndView 和 ViewResolver 等⼀些简单的概念,开发Web 应⽤将会变的⾮常简单。
3、SpringBoot
Spring 和 SpringMVC 的问题在于需要配置⼤量的参数。
Spring Boot 通过⼀个⾃动配置和启动的项来⽬解决这个问题。为了更快的构建产品就绪应⽤程序,Spring Boot 提供了⼀些⾮功能性特征。
问题⼆
什么是⾃动配置?
Spring 和 SpringMVC 的问题在于需要配置⼤量的参数。
我们能否带来更多的智能?当⼀个 MVC JAR 添加到应⽤程序中的时候,我们能否⾃动配置⼀些 beans?
Spring 查看(CLASSPATH 上可⽤的框架)已存在的应⽤程序的配置。在此基础上,Spring Boot 提供了配置应⽤程序和框架所需要的基本配置。这就是⾃动配置。
问题三
什么是 Spring Boot Stater ?
启动器是⼀套⽅便的依赖没描述符,它可以放在⾃⼰的程序中。你可以⼀站式的获取你所需要的 Spring 和相关技术,⽽不需要依赖描述符的通过⽰例代码搜索和复制黏贴的负载。
例如,如果你想使⽤ Sping 和 JPA 访问数据库,只需要你的项⽬包含 spring-boot-starter-data-jpa 依赖项,你就可以完美进⾏。
问题四
你能否举⼀个例⼦来解释更多 Staters 的内容?
让我们来思考⼀个 Stater 的例⼦ -Spring Boot Stater Web。
如果你想开发⼀个 web 应⽤程序或者是公开 REST 服务的应⽤程序。Spring Boot Start Web 是⾸选。让我们使⽤ Spring Initializr 创建⼀个 Spring Boot Start Web 的快速项⽬。
Spring Boot Start Web 的依赖项
下⾯的截图是添加进我们应⽤程序的不同的依赖项
依赖项可以被分为:
Spring - core,beans,context,aop
Web MVC - (Spring MVC)
Jackson - for JSON Binding
Validation - Hibernate,Validation API
Enbedded Servlet Container - Tomcat
Logging - logback,slf4j
任何经典的 Web 应⽤程序都会使⽤所有这些依赖项。Spring Boot Starter Web 预先打包了这些依赖项。
作为⼀个开发者,我不需要再担⼼这些依赖项和它们的兼容版本。
问题五
Spring Boot 还提供了其它的哪些 Starter Project Options?
Spring Boot 也提供了其它的启动器项⽬包括,包括⽤于开发特定类型应⽤程序的典型依赖项。
spring-boot-starter-web-services - SOAP Web Services;
spring-boot-starter-web - Web 和 RESTful 应⽤程序;
spring-boot-starter-test - 单元测试和集成测试;
spring-boot-starter-jdbc - 传统的 JDBC;
spring-boot-starter-hateoas - 为服务添加 HATEOAS 功能;
spring-boot-starter-security - 使⽤ SpringSecurity 进⾏⾝份验证和授权;
spring-boot-starter-data-jpa - 带有 Hibeernate 的 Spring Data JPA;
spring-boot-starter-data-rest - 使⽤ Spring Data REST 公布简单的 REST 服务;
问题六
Spring 是如何快速创建产品就绪应⽤程序的?
Spring Boot 致⼒于快速产品就绪应⽤程序。为此,它提供了⼀些譬如⾼速缓存,⽇志记录,监控和嵌⼊式服务器等开箱即⽤的⾮功能性特征。spring-boot-starter-actuator - 使⽤⼀些如监控和跟踪应⽤的⾼级功能
spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat - 选择您的特定嵌⼊式 Servlet 容器
spring-boot-starter-logging - 使⽤ logback 进⾏⽇志记录
spring-boot-starter-cache - 启⽤ Spring Framework 的缓存⽀持
怎么把项目导入到eclipse
###Spring2 和 Spring5 所需要的最低 Java 版本是什么?
Spring Boot 2.0 需要 Java8 或者更新的版本。Java6 和 Java7 已经不再⽀持。
推荐阅读:
问题七
创建⼀个 Spring Boot Project 的最简单的⽅法是什么?
Spring Initializr是启动 Spring Boot Projects 的⼀个很好的⼯具。
就像上图中所展⽰的⼀样,我们需要做⼀下⼏步:
登录 Spring Initializr,按照以下⽅式进⾏选择:
选择 com.in28minutes.springboot 为组
选择 studet-services 为组件
选择下⾯的依赖项
Web
Actuator
DevTools
点击⽣ GenerateProject
将项⽬导⼊ Eclipse。⽂件 - 导⼊ - 现有的 Maven 项⽬
问题⼋
Spring Initializr 是创建 Spring Boot Projects 的唯⼀⽅法吗?
不是的。
Spring Initiatlizr 让创建 Spring Boot 项⽬变的很容易,但是,你也可以通过设置⼀个 maven 项⽬并添加正确的依赖项来开始⼀个项⽬。在我们的 Spring 课程中,我们使⽤两种⽅法来创建项⽬。
第⼀种⽅法是 start.spring.io 。
另外⼀种⽅法是在项⽬的标题为“Basic Web Application”处进⾏⼿动设置。
⼿动设置⼀个 maven 项⽬
这⾥有⼏个重要的步骤:
在 Eclipse 中,使⽤⽂件 - 新建 Maven 项⽬来创建⼀个新项⽬
添加依赖项。
添加 maven 插件。
添加 Spring Boot 应⽤程序类。
到这⾥,准备⼯作已经做好!
问题九
为什么我们需要 spring-boot-maven-plugin?
spring-boot-maven-plugin 提供了⼀些像 jar ⼀样打包或者运⾏应⽤程序的命令。
spring-boot:run 运⾏你的 SpringBooty 应⽤程序。
spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可执⾏
spring-boot:start 和 spring-boot:stop 管理 Spring Boot 应⽤程序的⽣命周期(也可以说是为了集成测试)。
spring-boot:build-info ⽣成执⾏器可以使⽤的构造信息。
问题⼗
如何使⽤ SpringBoot ⾃动重装我的应⽤程序?
使⽤ Spring Boot 开发⼯具。
把 Spring Boot 开发⼯具添加进⼊你的项⽬是简单的。
把下⾯的依赖项添加⾄你的 Spring Boot l 中
重启应⽤程序,然后就可以了。
同样的,如果你想⾃动装载页⾯,有可以看看 FiveReload
在我测试的时候,发现了 LiveReload 漏洞,如果你测试时也发现了,请⼀定要告诉我们。
问题⼗⼀
什么是嵌⼊式服务器?我们为什么要使⽤嵌⼊式服务器呢?
思考⼀下在你的虚拟机上部署应⽤程序需要些什么。
第⼀步:安装 Java
第⼆部:安装 Web 或者是应⽤程序的服务器(Tomat/Wbesphere/Weblogic 等等)
第三部:部署应⽤程序 war 包
如果我们想简化这些步骤,应该如何做呢?
让我们来思考如何使服务器成为应⽤程序的⼀部分?
你只需要⼀个安装了 Java 的虚拟机,就可以直接在上⾯部署应⽤程序了,
是不是很爽?
这个想法是嵌⼊式服务器的起源。
当我们创建⼀个可以部署的应⽤程序的时候,我们将会把服务器(例如,tomcat)嵌⼊到可部署的服务器中。
例如,对于⼀个 Spring Boot 应⽤程序来说,你可以⽣成⼀个包含 Embedded Tomcat 的应⽤程序 jar。你就可以想运⾏正常 Java 应⽤程序⼀样来运⾏ web 应⽤程序了。
嵌⼊式服务器就是我们的可执⾏单元包含服务器的⼆进制⽂件(例如,tomcat.jar)。
问题⼗⼆
如何在 Spring Boot 中添加通⽤的 JS 代码?
在源⽂件夹下,创建⼀个名为 static 的⽂件夹。然后,你可以把你的静态的内容放在这⾥⾯。
例如,myapp.js 的路径是 resources\static\js\myapp.js
你可以参考它在 jsp 中的使⽤⽅法:
错误:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.
该如何来修复这个错误呢?
两种⽅法:
⽅法 1:关闭安全验证
application.properties
abled:FALSE
⽅法⼆:在⽇志中搜索密码并传递⾄请求标头中
问题⼗三
什么是 Spring Data?
来⾃://projects.spring.io/spring- data/
Spring Data 的使命是在保证底层数据存储特殊性的前提下,为数据访问提供⼀个熟悉的,⼀致性的,基于 Spring 的编程模型。这使得使⽤数据访问技术,关系数据库和⾮关系数据库,map-reduce 框架以及基于云的数据服务变得很容易。
为了让它更简单⼀些,Spring Data 提供了不受底层数据源限制的 Abstractions 接⼝。
下⾯来举⼀个例⼦:
你可以定义⼀简单的库,⽤来插⼊,更新,删除和检索代办事项,⽽不需要编写⼤量的代码。
问题⼗四
什么是 Spring Data REST?
Spring Data TEST 可以⽤来发布关于 Spring 数据库的 HATEOAS RESTful 资源。
下⾯是⼀个使⽤ JPA 的例⼦:
不需要写太多代码,我们可以发布关于 Spring 数据库的 RESTful API。
下⾯展⽰的是⼀些关于 TEST 服务器的例⼦
POST:
URL:http://localhost:8080/todos Use Header:Content-Type:Type:application/json Request Content
代码如下:
响应内容:
响应包含新创建资源的 href。
问题⼗五
path=”users”, collectionResourceRel=”users” 如何与 Spring Data Rest ⼀起使⽤?
path- 这个资源要导出的路径段。 collectionResourceRel- ⽣成指向集合资源的链接时使⽤的 rel 值。在⽣成 HATEOAS 链接时使⽤。
问题⼗六
当 Spring Boot 应⽤程序作为 Java 应⽤程序运⾏时,后台会发⽣什么?
如果你使⽤ Eclipse IDE,Eclipse maven 插件确保依赖项或者类⽂件的改变⼀经添加,就会被编译并在⽬标⽂件中准备好!在这之后,就和其它的 Java 应⽤程序⼀样了。
当你启动 java 应⽤程序的时候,spring boot ⾃动配置⽂件就会魔法般的启⽤了。
当 Spring Boot 应⽤程序检测到你正在开发⼀个 web 应⽤程序的时候,它就会启动 tomcat。
问题⼗七
我们能否在 spring-boot-starter-web 中⽤ jetty 代替 tomcat?
在 spring-boot-starter-web 移除现有的依赖项,并把下⾯这些添加进去。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。