SpringBoot面试题 您所在的位置:网站首页 下列哪个是springboot项目parent节点的artifactid配置 SpringBoot面试题

SpringBoot面试题

2023-09-16 06:37| 来源: 网络整理| 查看: 265

Spring Boot是微服务的最佳Java框架。 我们建议您成为Spring Boot的专家!

问:Spring Boot vs Spring MVC vs Spring - 他们如何比较?

Spring框架

Spring Framework最重要的特性是依赖注入。 所有Spring模块的核心是依赖注入或IOC控制反转。

正确使用DI或IOC时,我们可以开发松散耦合的应用程序。 松散耦合的应用程序可以轻松进行单元测试。

Spring MVC

Spring MVC Framework提供了开发Web应用程序的分离方式。 使用Dispatcher Servlet,ModelAndView和View Resolver等简单概念,可以轻松开发Web应用程序。

春季启动

Spring和Spring MVC的问题是需要的配置量。

/WEB-INF/views/ .jsp  

Spring Boot通过自动配置和入门项目的组合解决了这个问题。 Spring Boot还提供了一些非功能性功能,可以更快地构建生产就绪应用程序。

有关代码示例的完整答案,请参阅 - Spring Boot vs Spring vs Spring MVC

问:什么是自动配置?

Spring和Spring MVC的问题是需要的配置量。

  /WEB-INF/views/ .jsp  

我们能为此带来更多智慧吗? 将spring mvc jar添加到应用程序中时,我们可以自动自动配置某些bean吗?

Spring Boot查看a)CLASSPATH上可用的框架b)应用程序的现有配置。 基于这些,Spring Boot提供了使用这些框架配置应用程序所需的基本配置。 这称为自动配置。

有关代码示例的完整答案,请参阅自动配置 。

问:什么是Spring Boot Starter项目?

启动器是一组方便的依赖关系描述符,您可以在应用程序中包含这些描述符。 您可以获得所需的所有Spring和相关技术的一站式服务,而无需搜索示例代码并复制粘贴的依赖描述符。

例如,如果您想开始使用Spring和JPA进行数据库访问,只需在项目中包含spring-boot-starter-data-jpa依赖项,就可以了。

问:你能用一个例子解释一下有关入门者的更多信息吗?

让我们考虑一个示例启动器 - Spring Boot Starter Web。

如果您想开发Web应用程序或应用程序来公开休息服务,Spring Boot Start Web是首选。 让我们使用Spring Initializr使用Spring Boot Starter Web创建一个快速项目。

Spring Boot Starter Web的依赖关系

  org.springframework.boot spring-boot-starter-web  

以下屏幕截图显示了添加到我们的应用程序中的不同依赖项

 

依赖关系可分为:

春天 - 核心,豆类,背景,aop     Web MVC - (Spring MVC)     杰克逊 - 用于JSON绑定     验证 - Hibernate验证器,验证API     嵌入式Servlet容器 - Tomcat     记录 - logback,slf4j 任何典型的Web应用程序都将使用所有这些依赖项。 Spring Boot Starter Web预装了这些。

作为开发人员,我不需要担心这些依赖项或它们的兼容版本。

问:Spring Boot提供的其他Starter Project Options是什么?

Spring Boot还提供其他初始项目,包括开发特定类型应用程序的典型依赖项

spring-boot-starter-web-services - SOAP Web服务     spring-boot-starter-web - Web和RESTful应用程序     spring-boot-starter-test - 单元测试和集成测试     spring-boot-starter-jdbc - 传统的JDBC     spring-boot-starter-hateoas - 为您的服务添加HATEOAS功能     spring-boot-starter-security - 使用Spring Security进行身份验证和授权     spring-boot-starter-data-jpa - 带有Hibernate的Spring Data JPA     spring-boot-starter-data-rest - 使用Spring Data REST公开简单REST服务 问:Spring如何在短时间内创建生产就绪应用程序?

Spring Boot旨在快速实现生产就绪应用程序。 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的缓存支持 Spring Boot 2和Spring 5的最低基准Java版本是什么?

Spring Boot 2.0需要Java 8或更高版本。 不再支持Java 6和7。

推荐阅读

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0.0-M1-Release-Notes 问:创建Spring Boot项目最简单的方法是什么?

Spring Initializr http://start.spring.io/是引导Spring Boot项目的绝佳工具。

 

如上图所示,必须执行以下步骤

启动Spring Initializr并选择以下内容     选择com.in28minutes.springboot作为Group         选择student-services作为神器         选择以下依赖项         卷筒纸             执行器             DevTools                   单击“生成项目”。     将项目导入Eclipse。 文件 - >导入 - >现有的Maven项目。 问:Spring Initializr是创建Spring Boot项目的唯一方法吗?

没有。

Spring Initializr可以轻松创建Spring Boot项目。 但您可以设置maven项目并添加正确的依赖项以开始。

在我们的Spring课程中,我们使用2种方法来创建项目。

第一个是start.spring.io。     另一个 - 手动设置项目在标题为“基本Web应用程序”的部分中使用 手动设置maven项目

以下是重要步骤:

在Eclipse中,使用File - > New Maven Project创建一个新项目。     添加依赖项。     添加maven插件!     添加Spring Boot Application类 你准备好了!

问:为什么我们需要spring-boot-maven-plugin?

spring-boot-maven-plugin提供了一些命令,使您可以将代码打包为jar或运行应用程序

spring-boot:run运行Spring Boot应用程序。     spring-boot:重新打包重新打包你的jar / war是可执行的。     spring-boot:start和spring-boot:停止管理Spring Boot应用程序的生命周期(即集成测试)。     spring-boot:build-info生成可由执行器使用的构建信息。 问:如何使用Spring Boot启用应用程序的自动重新加载?

使用Spring Boot开发人员工具。

将Spring Boot Developer Tools添加到项目中非常简单。

将此依赖项添加到Spring Boot Project pom.xml中

  org.springframework.boot spring-boot-devtools runtime  

重启应用程序。

你们都是Set。

如果您还想自动加载页面,可以查看LiveReload

http://www.logicbig.com/tutorials/spring-framework/spring-boot/boot-live-reload/。 在我的试验中,我们发现了LiveReload越野车。 如果您有更好的使用经验,请告诉我们。

问:什么和为什么嵌入式服务器?

考虑一下在虚拟机上部署应用程序(通常)所需的内容。

第1步:安装Java     第2步:安装Web /应用程序服务器(Tomcat / Websphere / Weblogic等)     第3步:部署应用程序之战 如果我们想简化这个怎么办?

如何使服务器成为应用程序的一部分?

您只需要安装了Java的虚拟机,就可以直接在虚拟机上部署应用程序。 不是很酷吗?

这个想法是嵌入式服务器的起源。

当我们创建可部署的应用程序时,我们会将服务器(例如,tomcat)嵌入到deployable中。

例如,对于Spring Boot应用程序,您可以生成包含嵌入式Tomcat的应用程序jar。 您可以将Web应用程序作为普通Java应用程序运行!

嵌入式服务器是指我们的可部署单元包含服务器的二进制文件(例如,tomcat.jar)。

问:如何使用Spring Boot添加自定义JS代码?

在资源文件夹下创建名为static的文件夹。 您可以将静态内容放在该文件夹中。

对于您的示例,myapp.js的路径是resources \ static \ js \ myapp.js

你可以在jsp中使用它来引用它

  

错误:HAL浏览器给我未经授权的错误 - 访问此资源需要完全身份验证。 我该如何解决?

 { "timestamp": 1488656019562, "status": 401, "error": "Unauthorized", "message": "Full authentication is required to access this resource.", "path": "/beans" } 

两种选择

选项1:禁用安全性

application.properties

 management.security.enabled: FALSE 

选项2:在日志中搜索密码并将其传递到请求标头中

问:什么是Spring Data?

来自http://projects.spring.io/spring-data/

Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特​​殊特性。它使数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得简单易用。

为了简化,Spring Data提供了您可以使用的抽象(接口),而不管底层数据源。

一个例子如下所示

 interface TodoRepository extends CrudRepository < Todo , Long > { 

您可以定义一个简单的存储库,并使用它从数据库中插入,更新,删除和检索todo实体 - 无需编写大量代码。

问:什么是Spring Data REST?

Spring Data REST可用于在Spring Data存储库周围公开HATEOAS RESTful资源。

使用JPA的示例如下所示

 @RepositoryRestResource ( collectionResourceRel = "todos" , path = "todos" ) public interface TodoRepository extends PagingAndSortingRepository < Todo , Long > { 

在不编写大量代码的情况下,我们可以在Spring Data Repositories中公开RESTful API。

下面显示了一些REST服务示例:

POST

URL:http:// localhost:8080 / todos     使用标题:内容类型:application / json     请求内容  { "user": "Jill", "desc": "Learn Hibernate", "done": false } 

响应内容

 { "user": "Jill", "desc": "Learn Hibernate", "done": false, "_links": { "self": { "href": "http://localhost:8080/todos/1" }, "todo": { "href": "http://localhost:8080/todos/1" } } } 

响应包含新创建的资源的href。

问:path =“users”,collectionResourceRel =“users”如何使用Spring Data Rest?

 @RepositoryRestResource(collectionResourceRel = "users", path = "users") public interface UserRestRepository extends PagingAndSortingRepository 

path - 要在其下导出此资源的路径段。     collectionResourceRel - 生成指向集合资源的链接时使用的rel值。 这在生成HATEOAS链接时使用。 问:当Spring Boot应用程序“作为Java应用程序运行”时,后台会发生什么?

如果您使用的是Eclipse IDE,Eclipse maven插件可确保只要您添加依赖项或对类文件进行更改,就会在目标文件夹中编译并准备好它! 之后它就像任何其他Java应用程序一样。

当您启动Java应用程序时,弹出启动自动配置魔法就会启动。

它会在看到您正在开发Web应用程序时启动tomcat! 问:我们可以在spring-boot-starter-web中使用jetty而不是tomcat吗?

删除spring-boot-starter-web上的现有依赖项并添加它们。

  org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty  

问:如何使用Spring Boot生成WAR文件?

推荐阅读

https://spring.io/guides/gs/convert-jar-to-war/ 这是spring文档的直接链接

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging 问:如何使用Spring Boot部署到其他服务器?

你需要做两个步骤

从项目中产生战争。     将其部署到您最喜欢的服务器(Websphere或Weblogic或Tomcat或...)。 第1步:本入门指南应该有所帮助 - https://spring.io/guides/gs/convert-jar-to-war/

第2步:取决于您的服务器

问:RequestMapping和GetMapping有什么区别?

RequestMapping是通用的 - 您可以使用注释上的method属性与GET,POST,PUT或任何其他请求方法一起使用。     GetMapping特定于GET请求方法。 它只是RequestMapping的扩展,以提高清晰度。 问:为什么我们建议不要在实际应用中使用Spring Data Rest?

我们认为Spring Data Rest很适合快速原型设计! 在Big应用程序中使用它时要小心!

使用Spring Data REST,您可以直接将数据库权限公开为REST服务。

在设计RESTful服务时,最佳设计实践表明您的界面应该考虑两个重要的事情

你的领域模型     你的消费者 使用Spring Data REST,您不会考虑其中任何一个。 您只需将实体公开为REST服务。

这就是为什么我们建议将它用于快速原型设计或项目的初始演变。 对于完全进化的项目来说,这可能不是一个好主意。

问:如何在Spring Initializer中更改项目的包名?

好消息是你可以自定义它。 单击“切换到完整版”链接。 您将能够配置您想要的包名称!

问:在哪里可以找到可在application.properties中配置的完整属性列表?

这是完整的指南

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 问:JPA和Hibernate有什么区别?

短篇故事

JPA是规范/接口     Hibernate是JPA实现之一 当我们使用JPA时,我们使用javax.persistence包中的注释和接口,而不使用hibernate导入包。

我们建议使用JPA注释,因为我们没有将Hibernate作为实现。 后来(我知道 -  

第3步 - 设置我的SQL数据库

有关更多信息,请访问https://github.com/in28minutes/jpa-with-hibernate#installing-and-setting-up-mysql 步骤4 - 配置与My SQL Database的连接

配置application.properties

 spring.jpa.hibernate.ddl-auto=none spring.datasource.url=jdbc:mysql://localhost:3306/todo_example spring.datasource.username=todouser spring.datasource.password=YOUR_PASSWORD 

第5步 - 重启,你准备好了!

而已

问:Spring Boot配置的默认h2数据库名称是什么? 为什么默认数据库名称为testdb?

这是列出application.properties中所有默认值的位置

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 寻找下面的财产

 spring.datasource.name=testdb # Name of the datasource. 

如果您正在使用H2内存数据库,这正是Spring Boot用于设置H2数据库的名称。

问:如果H2不在类路径中会发生什么?

你得到这个错误

 Cannot determine embedded database driver class for database type NONE 

将H2添加到pom.xml并重新启动服务器

  com.h2database h2 runtime  

问:你能否在事务管理中为ReadOnly提供一个真实的例子?

当您从数据库中读取内容,用户详细信息或任何其他详细信息时,您希望在事务上设置只读,以便Hibernate不需要检查实体的更改。 这更有效率。 问:使用Spring Boot公开自定义应用程序配置的最佳方法是什么?

@Value的问题在于您可以在整个应用程序中分配配置值。 更好的选择是采用集中式方法。

您可以使用@ConfigurationProperties定义配置组件。

 @Component @ConfigurationProperties("basic") public class BasicConfiguration { private boolean value; private String message; private int number; 

可以在application.properties中配置这些值

 basic.value: true basic.message: Dynamic Message basic.number: 100 

问:Profiles需要什么?

企业应用程序开发很复杂。 您有多个环境

开发     QA     阶段     生产 您希望在每个环境中具有不同的应用程序配置。

配置文件有助于为不同环境提供不同的应用程序配置。

Spring和Spring Boot提供了您可以指定的功能

不同配置文件中各种环境的配置是什么?     设置特定环境的活动配置文件。 Spring Boot将根据在特定环境中设置的活动配置文件来获取应用程序配置。

问:如何使用配置文件通过Spring Boot配置特定于环境的配置?

简介只是识别环境的关键。

在此示例中,我们将使用两个配置文件

开发     刺 application.properties中存在默认的应用程序配置。 让我们考虑一个例子。

application.properties

 basic.value= true basic.message= Dynamic Message basic.number= 100 

我们希望为dev配置文件自定义application.properties。 我们需要创建一个名为application-dev.properties的文件,并覆盖我们想要自定义的属性。

application-dev.properties

 basic.message: Dynamic Message in DEV 

同样,您可以配置prod配置文件的属性。

application-prod.properties

 basic.message: Dynamic Message in Prod 

配置文件特定配置后,您需要在环境中设置活动配置文件。

有多种方法可以做到这一点

在VM Arguments中使用-Dspring.profiles.active = prod     在application.properties中使用spring.profiles.active=prod *************************

 

 

 

参考:

https://translate.google.com/translate?hl=zh-CN&sl=en&u=https://dzone.com/articles/top-10-spring-boot-interview-questions&prev=search

 

 

在本文中,我们将讨论Spring Boot中的一些前10个面试问题。 如今,这些问题在就业市场上有点棘手和趋势。

1)@SpringBootApplication注释在内部执行什么操作?

根据Spring Boot文档, @ SpringBootApplication注释等同于使用@ Configuration , @EnableAutoConfiguration和@ComponentScan及其默认属性。 Spring Boot使开发人员可以使用单个注释而不是使用多个注释。 但是,正如我们所知,Spring提供了松散耦合的功能,我们可以根据项目需要为每个单独的注释使用这些功能。

2)如何在不使用basePackages过滤器的情况下排除任何包?

您可以通过不同的方式过滤任何包。 但Spring Boot为实现这一目标提供了一个棘手的选择,而无需触及组件扫描。 您可以在使用注释@SpringBootApplication时使用exclude属性。 请参阅以下代码段:

 @SpringBootApplication(exclude= {Employee.class}) public class FooAppConfiguration {} 

 

3)如何禁用特定的自动配置类?

如果找到任何您不想要的特定自动配置类,则可以使用@EnableAutoConfiguration的exclude属性。

 //By using "exclude" @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 

 

另一方面,如果类不在类路径上,则可以使用批注的excludeName属性并指定完全限定名称。

 //By using "excludeName" @EnableAutoConfiguration(excludeName={Foo.class}) 

 

此外,Spring Boot提供了通过使用spring.autoconfigure.exclude来控制要排除的自动配置类列表的spring.autoconfigure.exclude   属性。 您可以添加到application.properties中。 并且您可以使用逗号分隔添加多个类。

 //By using property file spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 

 

4)什么是弹簧执行器? 它的优点是什么?

这是Spring Boot中最常见的面试问题之一。 根据Spring doc:

“执行器是一个制造术语,指的是用于移动或控制某物的机械装置。执行器可以通过微小的变化产生大量的运动。”

众所周知,Spring Boot提供了许多自动配置功能,可帮助开发人员快速开发生产组件。 但是如果你考虑调试和如何调试,如果出现问题,我们总是需要分析日志并挖掘我们应用程序的数据流,以检查发生了什么。 因此,Spring Actuator可以轻松访问这些功能。 它提供了许多功能,即创建了什么bean,控制器中的映射,CPU使用率等。然后,可以自动收集和审核运行状况和度量标准。

它提供了一种非常简单的方法来访问少数生产就绪的REST端点,并从Web获取各种信息。 但是通过使用这些端点,您可以做很多事情来查看端点文档。 没有必要担心安全问题; 如果存在Spring Security,则默认使用Spring Security的内容协商策略保护这些端点。 否则,我们可以在RequestMatcher的帮助下配置自定义安全性。

5)如何启用/禁用执行器?

启用/禁用执行器很容易; 最简单的方法是使功能能够将依赖关系(Maven / Gradle)添加到spring-boot-starter-actuator,即Starter。 如果您不想启用执行器,则不要添加依赖项。

Maven依赖:

  org.springframework.boot spring-boot-starter-actuator  

 

6)什么是Spring Initializer?

这可能不是一个困难的问题,但面试官总是检查候选人的主题知识。 通常情况下,您不能总是期待您准备的问题。 然而,这几乎是所有时间都是一个非常常见的问题。

Spring Initializer是一个Web应用程序,它可以生成一个Spring Boot项目,其中包含快速启动它所需的一切。 一如既往,我们需要一个良好的项目框架; 它可以帮助您正确地创建项目结构/骨架。 您可以在此处了解有关初始化程序的更多信息

7)执行器什么是关机?

Shutdown是一个允许应用程序正常关闭的端点。 默认情况下不启用此功能。 您可以在application.properties文件中使用management.endpoint.shutdown.enabled = true来启用此功能。 但是如果你使用它,请注意这一点。

8)这是否可以在Spring启动时更改嵌入式Tomcat服务器的端口?

是的,可以更改端口。 您可以使用application.properties文件来更改端口。 但是你需要提到“ server.port ” (即server.port = 8081) 。 确保项目类路径中有application.properties; REST Spring框架将负责其余部分。 如果你提到server.port = 0 ,它会自动分配任何可用的端口。

9)我们可以在Spring Boot中覆盖或替换嵌入式Tomcat服务器吗?

是的,我们可以使用Starter依赖项将Embedded Tomcat替换为任何其他服务器。 您可以根据需要使用spring-boot-starter-jetty或spring-boot-starter-undertow作为每个项目的依赖项。

10)我们可以在Spring Boot应用程序中禁用默认Web服务器吗?

Spring的主要优点是提供灵活性来构建松散耦合的应用程序。 Spring提供了在快速配置中禁用Web服务器的功能。 是的,我们可以使用application.properties来配置Web应用程序类型,即spring.main.web-application-type=none 。

祝一切顺利!

 

 

 

 

 

 

***********************************

参考:

https://translate.google.com/translate?hl=zh-CN&sl=en&tl=zh-CN&u=https%3A%2F%2Fwww.educba.com%2Fspring-boot-interview-questions%2F

 

Spring启动面试问题和答案简介

Spring BOOT是一个非常流行的框架,它构建在Spring框架的顶层。 它提出了一种新的开发方法,可以简化Spring应用程序的引导和开发。 在典型的Spring框架中,有许多bean和元配置有多种方式,如XML ,注释和Java配置 。 Spring BOOT避免了所有配置,因此开发人员可以在很短的时间内快速启动新的Spring项目。 Spring BOOT不是解决某些问题的新方法,但它解决了与Spring框架相同的问题,但是配置很少甚至没有。 它遵循一种默认的配置方法。 它有助于减少大量的样板代码和配置,以改进开发,单元测试和集成测试过程。

现在,如果您正在寻找与Spring Boot相关的工作,那么您需要准备Spring Boot面试问题。 确实,每次采访都根据不同的工作档案而有所不同,但仍然要清楚你需要对Spring Boot有一个良好而清晰的知识。 在这里,我们准备了重要的春季采访问题和答案,这将有助于您在面试中取得成功。

以下是在采访中询问的顶级Spring Boot面试问题列表,这些问题分为两部分,如下所示:

 

第1部分 - Spring Boot面试问题(基础)

第一部分介绍了基本的Spring Boot面试问题和答案

Q1)使用Spring引导而不是spring框架有什么好处?

回答:  下面列出了一些优势点:

Spring引导提供了一种自以为是的配置,从而避免了大量的样板代码和配置。     它的应用程序可以很容易地集成到Spring生态系统中,如Spring Security,Spring AOP,Spring事务和缓存等。     它提供了Tomcat等嵌入式HTTP服务器来增强开发过程。     Spring启动提供了一个命令行界面,即CLI工具,用于开发和测试应用程序,这是一种快速且不那么具有侵入性的工具。     通过将配置减少到最小或“无配置”方法,Spring引导减少了大量的开发时间,从而提高了生产率。 Q2)什么是@SpringBootApplication注释?

回答:  在Spring BOOT 1.2之前,使用@Configuration,@ EnableAutoConfiguration,@ ComponentScan等注释是很常见的。 @SpringBootApplication注释等同于之前提到的所有三个注释及其默认属性。 意味着单个注释现在足以支持多个功能,例如启用自动配置和执行bean的组件扫描。

 此类别中的热门课程

编程语言课程40在线课程| 270+小时| 可验证的完成证书| 终身访问  4.5(1,270个评分)

课程价格 ₹ 19999 ₹113999 查看课程

相关课程

C编程课程 Selenium培训认证

@SpringBootApplication  公共类MyApp {  .........。  }

Q3)解释Spring启动启动POM文件?

回答:  Starter POM文件实际上包含许多依赖项,因此项目可以在很短的时间内快速启动并运行。 它基本上是依赖描述符的组合,任何人都可以在其应用程序中包含这些依赖描述符,并且所有与项目相关 Starter POM文件还管理项目的传递依赖性。 POM文件结构来自基于Maven的应用程序。 换句话说,创建使用Spring REST创建其他API的项目的开发人员只需要包含相关的启动POM文件,该文件将导入Spring rest应用程序所需的所有依赖项。 现在不再需要框架所需的搜索和配置依赖关系的所有繁琐任务。

让我们转到下一个Spring Boot Interview Questions。

Q4)解释Spring Boot中的执行器?

回答:  Actuator为Spring启动应用程序提供了生产就绪功能。 生产就绪功能(如应用程序监控,收集指标,了解流量和数据库状态)对于使应用程序保持健康状态非常重要。 使用像库这样的Actuator的一个主要好处是开发人员可以访问生产级工具,而无需实现这些工具中的任何一个。 要为我们的包管理器启用Spring Boot Actuator依赖项,请在下面添加到您的POM文件中

  org.springframework.boot  spring-boot-starter-actuator 

一旦此依赖项位于类路径中,开发人员就可以使用多个端点。

Q5)没有服务器重启的情况下,在Spring启动时重新加载更改的方法是什么?

回答:  如果没有使用开发工具启动服务器,则会在spring boot中重新加载任何更改。

  org.springframework.boot  spring-boot-devtools  true 

Spring引导提供了名为DevTools的模块,可以提高Spring引导开发人员的工作效率。 它可以自动重新启动服务器,从而将更改自动部署到服务器。 这是常见的春季采访问题在采访中提出的问题。 因此,开发人员可以在Spring启动时重新加载他的更改,而无需重新启动服务器。 此程序包仅在开发模式下提供,但不在生产模式下提供。

 

第2部分 - Spring Boot面试问题(高级)

现在让我们来看看高级Spring Boot面试问题。

Q6)在自定义端口上运行Spring启动应用程序的方法是什么?

回答:  Spring引导中有一个名为application.properties的文件。 可以自定义此文件以引入任何更改,以更改正在运行的Spring引导应用程序的行为。 如果开发人员想要在自定义端口上运行spring boot应用程序,他可以在application.properties文件中指定端口:

server.port = 8080

此条目将确保应用程序将在8080端口上运行。

Q7)在Spring启动中实现Spring批处理的方法是什么?

回答:  批处理涉及大量的数据记录处理。 Spring启动批处理提供了一个可以重用的功能,对于进行批处理至关重要。 它还提供服务和功能,有助于优化和分区技术,从而实现高容量和高性能的批处理作业。

  org.springframework.boot  spring-boot-starter-batch  true 

POM文件中的上述更改将包括应用程序中必需的包,这些包是在spring boot项目中执行批处理所必需的。

让我们转到下一个Spring Boot Interview Questions

Q8)在Spring启动应用程序中配置日志记录的方法是什么?

回答:  开发人员可以在application.properties文件中轻松指定日志记录级别:  Logging.level.spring.framework = Debug  应用程序属性文件中的这一行将让spring框架记录到调试级别。  如果开发人员想要将日志放入文件,他可以在应用程序属性中指定logger.file

Logging.file = $ {java.io.tempdirectory} /sample.log

除了上述两种方法之外,开发人员还可以在main / java / resources下创建logback.xml文件,并在文件中指定日志记录配置。 Spring启动会自动选择这个文件。

Q9)包含spring-boot-maven-plugin有什么好处?

回答:  这是在采访中提出的高级春季采访问题。 spring-boot- maven-plugin提供了一个命令列表,这些命令有助于开发人员将代码打包为jar文件来运行应用程序。  Spring-boot:运行,它将运行spring boot应用程序。  Spring-boot:重新打包,它将重新打包jar或war文件  Spring-boot:构建,生成构建信息  Spring-boot:启动,停止 - 管理spring boot应用程序的生命周期。

Q10)在Spring启动应用程序中添加自定义JS代码的方法是什么?

回答:  开发人员可以在resources文件夹下创建名为“static”的文件夹。 然后可以将所有静态内容放入此文件夹中。  任何JavaScript文件,即test.js都将驻留在/resources/static/js/test.js中  然后,开发人员可以在JSP中引用此文件,如: 

 

推荐文章

这是Spring Boot Spring面试问题和答案列表的指南,以便候选人可以轻松地打击这些Spring Boot面试问题。 在这篇文章中,我们研究了顶级的春季采访问题,这些问题经常在采访中提出。您还可以查看以下文章以了解更多信息 -

iOS面试问题     Bootstrap面试问题     MATLAB面试问题     快速JS面试问题     Bootstrap和Jquery的最佳功能     Spring vs Hibernate:好处     Spring vs Struts:有什么功能     Hibernate面试问题必须知道  

*****************************************

 

 

参考:

https://translate.google.com/translate?hl=zh-CN&sl=en&u=https://www.baeldung.com/spring-boot-interview-questions&prev=search

问题

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

Spring Framework提供了多种功能,使Web应用程序的开发更加容易。 这些功能包括依赖注入,数据绑定,面向方面的编程,数据访问等等。

多年来,Spring一直在变得越来越复杂,这样的应用程序所需的配置量可能会令人生畏。 这就是Spring Boot派上用场的地方 - 它使配置Spring应用程序变得轻而易举。

从本质上讲,尽管Spring是不受欢迎的, Spring Boot会对平台和库有一个看法,让我们快速入门。

以下是Spring Boot带来的两个最重要的好处:

根据在类路径中找到的工件自动配置应用程序     提供生产中应用程序通用的非功能性功能,例如安全性或健康检查 请查看我们的其他教程之一, 了解vanilla Spring和Spring Boot之间的详细比较 。

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

我们可以像在任何其他库中一样在Maven项目中包含Spring Boot。 但是,最好的方法是从spring-boot-starter-parent项目继承并声明依赖于Spring Boot启动器 。 这样做可以让我们的项目重用Spring Boot的默认设置。

继承spring-boot-starter-parent项目非常简单 - 我们只需要在pom.xml中指定一个父元素:

      ;母体;;;;;           org.springframework.boot     ;的groupId; org.springframework.boot    ;;;;           spring-boot-starter-parent            弹簧引导起动父       ;;;;           2.1.1.RELEASE     ;版本; 2.1.1.RELEASE          

使用启动父项目很方便,但并不总是可行。 例如,如果我们公司要求所有项目都从标准POM继承,我们就不能依赖Spring Boot的启动父级。我们可以在Maven Central找到最新版本的spring-boot-starter-parent 。

在这种情况下,我们仍然可以通过此POM元素获得依赖关系管理的好处:

                ;依赖性;       ;依赖性;           org.springframework.boot     ;的groupId; org.springframework.boot               spring-boot-dependencies            弹簧引导依赖性                 2.1.1.RELEASE     ;版本; 2.1.1.RELEASE               pom     ;类型; POM               import     ;范围;进口                     

Q3。 有什么Spring Boot启动器可供选择吗?最后,我们可以为Spring Boot启动器添加一些依赖项,然后我们就可以了。

依赖管理是任何项目的关键方面。 当项目足够复杂时,管理依赖项可能会变成一场噩梦,因为涉及的工件太多了。

这就是Spring Boot入门者派上用场的地方。 每个入门者都可以作为我们所需的所有Spring技术的一站式服务。 然后,以一致的方式传递和管理其他所需的依赖关系。

所有启动器都在org.springframework.boot组下,其名称以spring-boot-starter-开头。 这种命名模式使得查找启动器变得很容易,尤其是在使用支持按名称搜索依赖关系的IDE时。

在撰写本文时,我们有超过50名初学者。 最常用的是:

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应用程序 有关启动器的完整列表,请参阅此存储库 。

要查找有关Spring Boot启动器的更多信息,请查看Spring启动器简介 。

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

如果我们要禁用特定的自动配置,我们可以使用@EnableAutoConfiguration批注的exclude属性来指示它。 例如,此代码段中和了DataSourceAutoConfiguration :

            1

            2

            3                                       // other annotations //其他注释

            @EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class) @EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)

            public class MyConfiguration { }公共类MyConfiguration {}                      如果我们使用@SpringBootApplication批注启用自动配置 - 它具有@EnableAutoConfiguration作为元注释 - 我们可以使用相同名称的属性禁用自动配置:

            1

            2

            3                                       // other annotations //其他注释

            @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

            public class MyConfiguration { }公共类MyConfiguration {}                      我们还可以使用spring.autoconfigure.exclude环境属性禁用自动配置。 application.properties文件中的此设置与以前相同:

            1                                       spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration                      Q5。 如何注册自定义自动配置?

要注册自动配置类,我们必须在META-INF / spring.factories文件的EnableAutoConfiguration键下列出其完全限定名称:

            1                                       org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.baeldung.autoconfigure.CustomAutoConfiguration                      如果我们使用Maven构建一个项目,那么该文件应放在resources / META-INF目录中,该目录将在程序包阶段结束时在上述位置。

Q6。 如何告诉自动配置在bean存在时退回?

要指示自动配置类在bean已经存在时退出,我们可以使用@ConditionalOnMissingBean批注。 此注释的最显着属性是:

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

            1

            2

            3

            4

            5

            6                                       @Configuration @组态

            public class CustomConfiguration {公共类CustomConfiguration {

                @Bean @豆

                @ConditionalOnMissingBean @ConditionalOnMissingBean

                public CustomService service() { ... } public CustomService service(){...}

            } }                      Q7。 如何将Spring Boot Web应用程序部署为JAR和WAR文件?

传统上,我们将Web应用程序打包为WAR文件,然后将其部署到外部服务器中。 这样做可以让我们在同一台服务器上安排多个应用程序。 在CPU和内存稀缺的时候,这是节省资源的好方法。

但事情发生了变化。 现在计算机硬件相当便宜,并且注意力转向服务器配置。 在部署期间配置服务器的一个小错误可能会导致灾难性后果。

Spring通过提供一个插件即spring-boot-maven-plugin来解决这个问题,将Web应用程序打包为可执行的JAR 。 要包含此插件,只需向pom.xml添加一个插件元素:

            1

            2

            3

            4                                       

                org.springframework.boot org.springframework.boot

                spring-boot-maven-plugin 弹簧引导行家-插件

                                  有了这个插件,我们将在执行包阶段后得到一个胖JAR。 此JAR包含所有必需的依赖项,包括嵌入式服务器。 因此,我们不再需要担心配置外部服务器。

然后我们可以像运行普通的可执行JAR一样运行应用程序。

请注意,必须将pom.xml文件中的packaging元素设置为jar才能构建JAR文件:

            1                                       jar 罐                      如果我们不包含这个元素,它也默认为jar 。

如果我们想要构建WAR文件,请将包装元素更改为war :

            1                                       war 战                      并将容器依赖关系从打包文件中删除:

            1

            2

            3

            4

            5                                       

                org.springframework.boot org.springframework.boot

                spring-boot-starter-tomcat 弹簧引导起动的Tomcat

                provided 提供

                                  执行Maven 包阶段后,我们将拥有一个可部署的WAR文件。

Q8。 如何将Spring Boot用于命令行应用程序?

与任何其他Java程序一样,Spring Boot命令行应用程序必须具有main方法。 此方法用作入口点,它调用SpringApplication#run方法来引导应用程序:

            1

            2

            3

            4

            5

            6

            7                                       @SpringBootApplication @SpringBootApplication

            public class MyApplication {公共类MyApplication {

                public static void main(String[] args) { public static void main(String [] args){

                    SpringApplication.run(MyApplication.class); SpringApplication.run(MyApplication.class);

                    // other statements //其他陈述

                } }

            } }                      然后SpringApplication类启动一个Spring容器并自动配置bean。

请注意,我们必须将配置类传递给run方法才能作为主要配置源。 按照惯例,这个参数就是入门类本身。

在调用run方法之后,我们可以像在常规程序中那样执行其他语句。

Q9。 有哪些可能的外部配置来源?

Spring Boot支持外部配置,允许我们在各种环境中运行相同的应用程序。 我们可以使用属性文件,YAML文件,环境变量,系统属性和命令行选项参数来指定配置属性。

然后,我们可以使用@Value注释,通过@ConfigurationProperties注释的绑定对象或环境抽象来访问这些属性。

以下是最常见的外部配置来源:

命令行属性:命令行选项参数是以双连字符开头的程序参数,例如-server.port = 8080 。 Spring Boot将所有参数转换为属性,并将它们添加到环境属性集中。     应用程序属性:应用程序属性是从application.properties文件或其YAML对应文件加载的属性。 默认情况下,Spring Boot会在当前目录,类路径根或其config子目录中搜索此文件。     特定于配置文件的属性:特定于配置文件的属性从application- {profile} .properties文件或其YAML对应文件加载。{profile}占位符指的是有效的个人资料。 这些文件与非特定属性文件位于相同位置,并且优先于非特定属性文件。 Q10。 Spring Boot支持轻松绑定是什么意思?

Spring Boot中的轻松绑定适用于配置属性的类型安全绑定 。

使用宽松绑定时,环境属性的键不需要与属性名称完全匹配。 这样的环境属性可以用camelCase,kebab-case,snake_case或大写字母写成,单词用下划线分隔。

例如,如果带有@ConfigurationProperties批注的bean类中的属性名为myProp ,则可以将其绑定到以下任何环境属性: myProp , my-prop , my_prop或MY_PROP 。

Q11。 Spring Boot DevTools用于什么?

Spring Boot Developer Tools或DevTools是一组工具,使开发过程更容易。 要包含这些开发时功能,我们只需要在pom.xml文件中添加依赖项:

            1

            2

            3

            4                                       

                org.springframework.boot org.springframework.boot

                spring-boot-devtools 弹簧引导devtools

                                  如果应用程序在生产中运行,则会自动禁用spring-boot-devtools模块。 默认情况下,重新打包存档也会排除此模块。 因此,它不会给我们的最终产品带来任何开销。

默认情况下,DevTools应用适合开发环境的属性。 这些属性禁用模板缓存,为Web组启用调试日志记录,等等。 因此,我们拥有这种合理的开发时配置,而无需设置任何属性。

只要类路径上的文件发生更改,使用DevTools的应用程序就会重新启动。 这是开发中非常有用的功能,因为它可以快速反馈修改。

默认情况下,静态资源(包括视图模板)不会启动重新启动。 相反,资源更改会触发浏览器刷新。 请注意,只有在浏览器中安装LiveReload扩展以与DevTools包含的嵌入式LiveReload服务器进行交互时,才会发生这种情况。

有关此主题的更多信息,请参阅Spring Boot DevTools概述 。

Q12。 如何编写集成测试?

在为Spring应用程序运行集成测试时,我们必须有一个ApplicationContext 。

为了让我们的生活更轻松,Spring Boot为测试提供了一个特殊的注释 - @SpringBootTest 。 此批注从其classes属性指示的配置类创建ApplicationContext 。

如果未设置classes属性,Spring Boot将搜索主配置类。 搜索从包含测试的包开始,直到找到使用@SpringBootApplication或@SpringBootConfiguration注释的类。

请注意,如果我们使用JUnit 4,我们必须用@RunWith(SpringRunner.class)装饰测试类。

有关详细说明,请查看我们的Spring Boot测试教程。

Q13 。 什么是Spring Boot Actuator用于?

从本质上讲,Actuator通过支持生产就绪功能,使Spring Boot应用程序栩栩如生。 这些功能使我们能够在生产中运行时监控和管理应用程序。

将Spring Boot Actuator集成到一个项目中非常简单。 我们需要做的就是在pom.xml文件中包含spring-boot-starter-actuator启动器:

            1

            2

            3

            4                                       

                org.springframework.boot org.springframework.boot

                spring-boot-starter-actuator 弹簧引导起动致动器

                                  Spring Boot Actuator可以使用HTTP或JMX端点公开操作信息。 但是,大多数应用程序都使用HTTP,其中端点的标识和/执行器前缀形成URL路径。

以下是Actuator提供的一些最常见的内置端点:

auditevents:公开审计事件信息     env:公开环境属性     health:显示应用程序运行状况信息     httptrace:显示HTTP跟踪信息     info:显示任意应用程序信息     指标:显示指标信息     记录器:显示和修改应用程序中记录器的配置     映射:显示所有@RequestMapping路径的列表     scheduledtasks:显示应用程序中的计划任务     threaddump:执行线程转储 有关详细的概述,请参阅我们的Spring Boot Actuator教程 。  



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有