SpringBoot面试题 | 您所在的位置:网站首页 › 下列哪个是springboot项目parent节点的artifactid配置 › SpringBoot面试题 |
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 实验室设备网 版权所有 |