前言:Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。
Java面试老不过?一定是面试答案有问题!
SpringBoot面试题

目录
SpringBoot面试相关
问题一、Spring Boot、Spring MVC 和 Spring 有什么区别?
问题二、什么是自动配置?
Spring Boot自动配置加载流程源码分析
问题三、什么是 Spring Boot Stater ?
问题四、你能否举一个例子来解释更多 Staters 的内容?
问题五、Spring Boot 还提供了其它的哪些 Starter Project Options?
问题六、Spring 是如何快速创建产品就绪应用程序的?
问题七、Springboot2.x 和 Spring 5 所需要的最低 Java 版本是什么
问题八、创建一个 Spring Boot Project 的最简单的方法是什么?
问题九、Spring Initializr 是创建 Spring Boot Projects 的唯一方法吗
问题一、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 Boot便是一个社区反馈推动的项目. Spring Boot可以说是至少近5年来Spring乃至整个Java社区最有影响力的项目之一。
Spring Boot主要包含以下特性:
l 直接嵌入Tomcat, Jetty或者Undertow作为Servlet container。从此之后再也不用将应用程序打包成war然后上传到application server里面了。
l 提供了starter POM, 能够非常方便的进行包管理, 很大程度上减少了jar hell或者dependency hell
l 自动进行Spring框架的配置,节省程序员大量的时间和精力,能够让程序员专注在业务逻辑代码的编写上
l 不需要任何第三方系统, Spring Boot自带了可以用于生产环境的程序状态信息和健康状态。同时可以让应用程序非常方便的读取外部的配置信息
l 完全不需要任何代码的自动生成。更不需要用xml来进行框架的配置
问题二、什么是自动配置?
以往的SSM框架组合中存在大量配置文件需要维护
SpringBoot遵循约定大于配置的原则给开发者提供了极大的便利
springboot 自动配置 主要通过
@EnableAutoConfiguration @Conditional @EnableConfigurationProperties或者@ConfigurationProperties几个注解来进行自动配置。
@EnableAutoConfiguration
Spring Boot自动配置加载流程源码分析
1. 首先找到入口类的注解

2. @EnableAutoConfiguration注解位置

2. 使用@Import导入(AutoConfigurationImportSelector.class)

3. getCandidateConfigurations

4.

5. 加载配置文件

开启自动配置,主要作用就是调用core包里的loadFactoryNames,将autoconfig包里的已经写好的自动配置加载进来。
@Conditional
条件注解,通过判断类路径下有没有相应配置的jar包来确定是否加载和自动配置这个类,
@EnableConfigurationProperties
的作用就是,给自动配置提供具体的配置参数,只需要写在application.properties中,就可以通过映射写入配置类的Pojo属性中。
@Enable*注释并不是SpringBoot新发明的注释,Spring 3框架就引入了这些注释,用这些注释替代XML配置文件。比如:
@EnableTransactionManagement注释,它能够声明事务管理
@EnableWebMvc注释,它能启用Spring MVC
@EnableScheduling注释,它可以初始化一个调度器。
问题三、什么是 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 功能;
hateoas:
HATEOAS(The Hypermedia As The Engine Of Application Statue)是REST架构的主要约束。“hepermedia”表示任何包含指向图片、电影、文字等资源的链接,Web是超媒体的经典例子。HATEOAS背后的思想其实非常简单,就是响应中包含指向其它资源的链接。客户端可以利用这些链接和服务器交互。
client不用事先知道服务或者工作流中不同步骤,还有client不用再为不同的资源硬编码URI了。而且服务器还可以在不破坏和客户端交互的情况下,更改URI。
非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 的缓存支持
问题七、Springboot2.x 和 Spring 5 所需要的最低 Java 版本是什么?
Springboot2.x和spring5的最低Java支持版本为Java 8
为了充分利用 Java 8 特性,Springboot2的代码库已进行了改进,而且该框架要求将 Java 8 作为最低的 JDK 版本。
Spring Boot 2.0 建立在 Spring Framework 5 之上,并且需要 Spring Framework 5
Spring 5 在类路径(和模块路径)上完全兼容 Java 9,而且它通过了 JDK 9 测试套件的测试。
问题八、创建一个 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 的唯一方法吗?
不是的。
第一种 通过start.spring.io 来生成下载
第二种 手动配置pom.xml
第三种 使用eclipse、idea插件
第四种 使用集成度更高的STS(SPRING TOOL SUITE http://spring.io/tools)
问题十、为什么我们需要 spring-boot-maven-plugin?
Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。
比如:
· mvn spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war
· mvn spring-boot:run,运行Spring Boot应用
· mvn spring-boot:start,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
· mvn spring-boot:stop,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
· mvn spring-boot:build-info,生成Actuator使用的构建信息文件build-info.properties
文章出自:http://qh.itpxw.cn/jyzn/201845030.html
文章标题:java程序员面试老不过 咋回事
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员
用户级别:10
机构名称:IT培训网
联 系 人:罗老师
联系电话:13783581536
联系手机:13783581536
在线客服:
在 线 QQ:
电子邮件:
网站域名:http://www.itpxw.cn
注册时间:2016-07-18 11:07
最后登录:2021-09-13 16:09
99%的同学,混了几年,连作为一名合格测试的基本功都丢了:...
软件开发测试的出路到底在哪?现在参加软件开发测试培训班还...
近年来,由于IT行业的人才稀缺,越来越多人转向了IT相关职业...
目前的国内市场,很多软件企业都存在着重开发、轻测试的现象...