参考:
https://translate.google.com/translate?hl=zh-CN&sl=en&u=https://www.springboottutorial.com/spring-boot-interview-questions&prev=search
Spring Boot是微服务的最佳Java框架。 我们建议您成为Spring Boot的专家!
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和相关技术的一站式服务,而无需搜索示例代码并复制粘贴的依赖描述符。
例如,如果您想开始使用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
以下屏幕截图显示了添加到我们的应用程序中的不同依赖项
依赖关系可分为:
任何典型的Web应用程序都将使用所有这些依赖项。 Spring Boot Starter Web预装了这些。
作为开发人员,我不需要担心这些依赖项或它们的兼容版本。
Spring Boot还提供其他初始项目,包括开发特定类型应用程序的典型依赖项
Spring Boot旨在快速实现生产就绪应用程序。 Spring Boot提供了一些开箱即用的非功能性功能,如缓存,日志记录,监控和嵌入式服务器。
Spring Boot 2.0需要Java 8或更高版本。 不再支持Java 6和7。
推荐阅读
Spring Initializr http://start.spring.io/是引导Spring Boot项目的绝佳工具。
如上图所示,必须执行以下步骤
com.in28minutes.springboot
作为Groupstudent-services
作为神器没有。
Spring Initializr可以轻松创建Spring Boot项目。 但您可以设置maven项目并添加正确的依赖项以开始。
在我们的Spring课程中,我们使用2种方法来创建项目。
手动设置maven项目
以下是重要步骤:
你准备好了!
spring-boot-maven-plugin提供了一些命令,使您可以将代码打包为jar或运行应用程序
使用Spring Boot开发人员工具。
将Spring Boot Developer Tools添加到项目中非常简单。
将此依赖项添加到Spring Boot Project pom.xml中
org.springframework.boot spring-boot-devtools runtime
重启应用程序。
你们都是Set。
如果您还想自动加载页面,可以查看LiveReload
在我的试验中,我们发现了LiveReload越野车。 如果您有更好的使用经验,请告诉我们。
考虑一下在虚拟机上部署应用程序(通常)所需的内容。
如果我们想简化这个怎么办?
如何使服务器成为应用程序的一部分?
您只需要安装了Java的虚拟机,就可以直接在虚拟机上部署应用程序。 不是很酷吗?
这个想法是嵌入式服务器的起源。
当我们创建可部署的应用程序时,我们会将服务器(例如,tomcat)嵌入到deployable中。
例如,对于Spring Boot应用程序,您可以生成包含嵌入式Tomcat的应用程序jar。 您可以将Web应用程序作为普通Java应用程序运行!
嵌入式服务器是指我们的可部署单元包含服务器的二进制文件(例如,tomcat.jar)。
在资源文件夹下创建名为static的文件夹。 您可以将静态内容放在该文件夹中。
对于您的示例,myapp.js的路径是resources \ static \ js \ myapp.js
你可以在jsp中使用它来引用它
{ "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:在日志中搜索密码并将其传递到请求标头中
来自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存储库周围公开HATEOAS RESTful资源。
使用JPA的示例如下所示
@RepositoryRestResource ( collectionResourceRel = "todos" , path = "todos" ) public interface TodoRepository extends PagingAndSortingRepository < Todo , Long > {
在不编写大量代码的情况下,我们可以在Spring Data Repositories中公开RESTful API。
下面显示了一些REST服务示例:
POST
{ "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。
@RepositoryRestResource(collectionResourceRel = "users", path = "users") public interface UserRestRepository extends PagingAndSortingRepository
如果您使用的是Eclipse IDE,Eclipse maven插件可确保只要您添加依赖项或对类文件进行更改,就会在目标文件夹中编译并准备好它! 之后它就像任何其他Java应用程序一样。
当您启动Java应用程序时,弹出启动自动配置魔法就会启动。
删除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文档的直接链接
你需要做两个步骤
第1步:本入门指南应该有所帮助 - https://spring.io/guides/gs/convert-jar-to-war/
第2步:取决于您的服务器
我们认为Spring Data Rest很适合快速原型设计! 在Big应用程序中使用它时要小心!
使用Spring Data REST,您可以直接将数据库权限公开为REST服务。
在设计RESTful服务时,最佳设计实践表明您的界面应该考虑两个重要的事情
使用Spring Data REST,您不会考虑其中任何一个。 您只需将实体公开为REST服务。
这就是为什么我们建议将它用于快速原型设计或项目的初始演变。 对于完全进化的项目来说,这可能不是一个好主意。
好消息是你可以自定义它。 单击“切换到完整版”链接。 您将能够配置您想要的包名称!
这是完整的指南
短篇故事
当我们使用JPA时,我们使用javax.persistence包中的注释和接口,而不使用hibernate导入包。
我们建议使用JPA注释,因为我们没有将Hibernate作为实现。 后来(我知道 - <1%Chance),我们可以使用另一个JPA实现。
我们建议管理服务层中的事务。 业务事务的逻辑在业务/服务层中,您可能希望在该级别强制执行事务管理。
在Spring Boot项目中,只要确保类路径上存在以下依赖项,您就应该能够启动H2控制台。
确切的依赖关系如下所示:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 runtime
一些提示:
由于Spring Boot自动配置。
这是我们添加的依赖项
org.springframework.boot spring-boot-starter-data-jpa
Starter spring-boot-starter-data-jpa对Hibernate和JPA具有传递依赖性。
当Spring Boot在类路径中看到Hibernate时,它会自动将其配置为默认的JPA实现。
这就是Spring Boot Autoconfiguration的魔力。
来自https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html
Spring Boot自动配置尝试根据您添加的jar依赖项自动配置Spring应用程序。 例如,如果HSQLDB在您的类路径上,并且您没有手动配置任何数据库连接bean,那么我们将自动配置内存数据库
更多阅读
让我们考虑其中一个例子 - MySQL
步骤1 - 将mqsql连接器的依赖项添加到pom.xml
mysql mysql-connector-java
第2步 - 从pom.xml中删除H2依赖项
或者至少将其范围作为测试
第3步 - 设置我的SQL数据库
步骤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步 - 重启,你准备好了!
而已
这是列出application.properties中所有默认值的位置
寻找下面的财产
spring.datasource.name=testdb # Name of the datasource.
如果您正在使用H2内存数据库,这正是Spring Boot用于设置H2数据库的名称。
你得到这个错误
Cannot determine embedded database driver class for database type NONE
将H2添加到pom.xml并重新启动服务器
com.h2database h2 runtime
@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
企业应用程序开发很复杂。 您有多个环境
您希望在每个环境中具有不同的应用程序配置。
配置文件有助于为不同环境提供不同的应用程序配置。
Spring和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
配置文件特定配置后,您需要在环境中设置活动配置文件。
有多种方法可以做到这一点
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 BOOT是一个非常流行的框架,它构建在Spring框架的顶层。 它提出了一种新的开发方法,可以简化Spring应用程序的引导和开发。 在典型的Spring框架中,有许多bean和元配置有多种方式,如XML ,注释和Java配置 。 Spring BOOT避免了所有配置,因此开发人员可以在很短的时间内快速启动新的Spring项目。 Spring BOOT不是解决某些问题的新方法,但它解决了与Spring框架相同的问题,但是配置很少甚至没有。 它遵循一种默认的配置方法。 它有助于减少大量的样板代码和配置,以改进开发,单元测试和集成测试过程。
现在,如果您正在寻找与Spring Boot相关的工作,那么您需要准备Spring Boot面试问题。 确实,每次采访都根据不同的工作档案而有所不同,但仍然要清楚你需要对Spring Boot有一个良好而清晰的知识。 在这里,我们准备了重要的春季采访问题和答案,这将有助于您在面试中取得成功。
以下是在采访中询问的顶级Spring Boot面试问题列表,这些问题分为两部分,如下所示:
第一部分介绍了基本的Spring Boot面试问题和答案
Q1)使用Spring引导而不是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文件中
一旦此依赖项位于类路径中,开发人员就可以使用多个端点。
Q5)没有服务器重启的情况下,在Spring启动时重新加载更改的方法是什么?
回答:
如果没有使用开发工具启动服务器,则会在spring boot中重新加载任何更改。
Spring引导提供了名为DevTools的模块,可以提高Spring引导开发人员的工作效率。 它可以自动重新启动服务器,从而将更改自动部署到服务器。 这是常见的春季采访问题在采访中提出的问题。 因此,开发人员可以在Spring启动时重新加载他的更改,而无需重新启动服务器。 此程序包仅在开发模式下提供,但不在生产模式下提供。
现在让我们来看看高级Spring Boot面试问题。
Q6)在自定义端口上运行Spring启动应用程序的方法是什么?
回答:
Spring引导中有一个名为application.properties的文件。 可以自定义此文件以引入任何更改,以更改正在运行的Spring引导应用程序的行为。 如果开发人员想要在自定义端口上运行spring boot应用程序,他可以在application.properties文件中指定端口:
server.port = 8080
此条目将确保应用程序将在8080端口上运行。
Q7)在Spring启动中实现Spring批处理的方法是什么?
回答:
批处理涉及大量的数据记录处理。 Spring启动批处理提供了一个可以重用的功能,对于进行批处理至关重要。 它还提供服务和功能,有助于优化和分区技术,从而实现高容量和高性能的批处理作业。
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中引用此文件,如: