SpringBoot是一个用于微服务的Java框架。我们建议您成为SpringBoot专家。本文精选了三十五个常见的SpringBoot知识点,希望对你有所帮助!问题1SpringBoot、SpringMVC和Spring有什么区别?1、Spring最大的特点就是依赖注入。所有SpringModule都是依赖注入或IOC控制反转。当我们适当地使用DI或IOC时,我们可以开发出松散耦合的应用程序。可以轻松完成松散耦合应用程序的单元测试。2.SpringMVCSpringMVC提供了一种单独的方法来开发Web应用程序。通过使用一些简单的概念,如DispatcherServlet、MoudlAndView和ViewResolver,开发Web应用程序将变得非常简单。3、SpringBootSpring和SpringMVC的问题是需要配置大量的参数。SpringBoot通过自动配置和启动项目解决了这个问题。为了更快地构建生产就绪的应用程序,SpringBoot提供了一些非功能性特性。问题2什么是自动配置?Spring和SpringMVC的问题是要配置的参数很多。我们能带来更多的智慧吗?当MVCJAR添加到应用程序时,我们可以自动配置一些bean吗?Spring查看(CLASSPATH上可用的框架)现有应用程序的配置。在此基础上,SpringBoot提供了配置应用程序和框架所需的基本配置。这是自动配置。问题3什么是SpringBootStater?启动器是一组方便的依赖描述符,它可以放在自己的程序中。您可以在一个地方获得所需的所有Spring和相关技术,而无需搜索示例代码和复制粘贴加载的相关描述符。例如,如果你想使用Spring和JPA访问数据库,你只需要你的项目包含spring-boot-starter-data-jpa依赖项就可以了。问题4你能举个例子来解释更多关于Staters的内容吗?让我们考虑一个Stater的例子——SpringBootStaterWeb。如果要开发Web应用程序或公开REST服务的应用程序。SpringBootStartWeb是一个不错的选择。下面我们使用SpringInitializr创建一个SpringBootStartWeb快速项目。SpringBootStartWeb的依赖下面截图是我们应用添加的不同依赖依赖可以分为:Spring-core,beans,context,aopWebMVC-(SpringMVC)Jackson-forJSONBindingValidation-Hibernate,ValidationAPI嵌入式Servlet容器-Tomcat日志记录-logback、slf4j任何经典的Web应用程序都会使用所有这些依赖项。SpringBootStarterWeb预打包了这些依赖项。作为开发人员,我不再需要担心这些依赖项及其兼容版本。问题5SpringBoot还提供了哪些其他StarterProject选项?SpringBoot还提供了其他启动项目,其中包括用于开发特定类型应用程序的典型依赖项。spring-boot-starter-web-services-SOAPWeb服务;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-带有HibeernateJPA的SpringData;spring-boot-starter-data-rest-使用SpringDataREST公开简单的REST服务;问题6Spring如何快速创建生产就绪的应用程序?SpringBoot是关于快速生产就绪应用程序的。为此,它提供了开箱即用的非功能性特性,例如缓存、日志记录、监控和嵌入式服务器。spring-boot-starter-actuator-使用一些高级功能,如监控和跟踪应用程序-starter-logging-使用logback进行日志记录spring-boot-starter-cache-启用对SpringFramework的缓存支持###Spring2和Spring5所需的Java版本是什么?SpringBoot2.0需要Java8或更新版本。不再支持Java6和Java7。推荐阅读:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0.0-M1-Release-Notes问题7创建SpringBootProject最简单的方法是什么?SpringInitializr是启动SpringBoot项目的绝佳工具。如上图所示,我们需要做几个步骤:登录SpringInitializr,通过以下方式进行选择:选择com.in28minutes.springbootgroup选择studet-services组件WebActuator选择如下依赖DevTools单击GenerateGenerateProject将项目导入Eclipse。文件-导入-已有的Maven项目问题8SpringInitializr是创建SpringBoot项目的唯一途径吗?不。SpringInitiatlizr使创建SpringBoot项目变得容易,但是,您也可以通过设置maven项目并添加正确的依赖项来启动项目。在我们的春季课程中,我们使用两种方法来创建项目。你可以选择start.spring.io。另一种方法是在名为“BasicWebApplication”的项目中手动设置它。手动设置maven项目这里有几个重要的步骤:在Eclipse中,使用File-NewMavenProject创建一个新项目添加依赖项。添加maven插件。添加SpringBoot应用程序类。至此,准备工作完成!问题9为什么需要spring-boot-maven-plugin?spring-boot-maven-plugin提供了一些用于打包或运行应用程序的命令,例如jar。spring-boot:run运行您的SpringBooty应用程序。spring-boot:repackage重新打包您的jar或war包,使其可执行spring-boot:start和spring-boot:stop管理SpringBoot应用程序的生命周期(也用于集成测试)。spring-boot:build-info生成执行程序可以使用的构建信息。问题十如何使用SpringBoot自动重新加载我的应用程序?使用SpringBoot开发工具。将SpringBoot开发工具添加到您的项目中非常简单。将以下依赖项添加到您的SpringBoot项目pom.xml重新启动应用程序,您就可以开始了。同样,如果你想自动加载页面,可以看看FiveReloadhttp://www.logicbig.com/tutorials/spring-framework/spring-boot/boot-live-reload/。我在测试时发现了LiveReload漏洞,如果您在测试过程中发现,请务必告知我们。Question11什么是嵌入式服务器?为什么要使用嵌入式服务器?想一想在您的虚拟机上部署应用程序需要什么。一:安装Java第二部分:安装Web或应用服务器(Tomat/Wbesphere/Weblogic等)第三部分:部署应用war包如果我们想简化这些步骤,应该怎么做呢?让我们考虑一下如何使服务器成为应用程序的一部分?只需要一台安装了Java的虚拟机,就可以直接在上面部署应用,是不是很酷?这个想法是嵌入式服务器的起源。当我们创建可部署应用程序时,我们会将服务器(例如tomcat)嵌入到可部署服务器中。例如,对于SpringBoot应用程序,您可以生成一个包含嵌入式Tomcat的应用程序jar。然后,您可以像运行普通Java应用程序一样运行Web应用程序。嵌入式服务器是我们的可执行单元包含服务器二进制文件(例如,tomcat.jar)的地方。问题12如何在SpringBoot中添加常用的JS代码?在源文件夹下,创建一个名为static的文件夹。然后,您可以将静态内容放在那里。比如myapp.js的路径是resources\static\js\myapp.js,可以参考jsp中的使用方法:Error:HALbrowsergivesmeunauthorizederror-Fullauthenticationisrequiredtoaccessthisresource。如何解决这个错误呢?两种方法:方法一:关闭安全验证application.propertiesmanagement.security.enabled:FALSE方法二:在日志中查找密码,传递给请求头问题13什么是SpringData?来自://projects.spring.io/spring-data/SpringData的使命是为数据访问提供一个熟悉的、一致的、基于Spring的编程模型,同时保证底层数据存储的特??殊性。这使得使用数据访问技术、关系和非关系数据库、map-reduce框架和基于云的数据服务变得容易。为了让它更简单一些,SpringData提供了一个不受底层数据源限制的抽象接口。下面是一个示例:您可以定义一个简单的库来插入、更新、删除和检索项目,而无需编写大量代码。问题14什么是SpringDataREST?SpringDataTEST可用于发布有关Spring数据库的HATEOASRESTful资源。下面是一个使用JPA的示例:无需编写太多代码,我们就可以将RESTfulAPI发布到Spring数据库。下面是测试服务器上的一些示例POST:URL:http://localhost:8080/todos使用Header:Content-Type:Type:application/json请求内容代码如下:响应内容:响应包含的href新创建的资源。问题15path="users",collectionResourceRel="users"如何与SpringDataRest协同工作?path-要从此资源导出的路径段。collectionResourceRel-生成集合资源链接时使用的rel值。在生成HATEOAS链接时使用。问题十六SpringBoot应用程序作为Java应用程序运行时,后台发生了什么?如果您使用EclipseIDE,Eclipsemaven插件可确保在添加依赖项或类文件更改后立即编译并在目标文件中准备就绪!之后,它就像任何其他Java应用程序一样。当您启动Java应用程序时,springboot自动配置会神奇地启用。当SpringBoot应用程序检测到您正在开发Web应用程序时,它会启动tomcat。问题17spring-boot-starter-web中可以用jetty代替tomcat吗?删除spring-boot-starter-web中现有的依赖项并添加以下内容。问题18如何使用SpringBoot生成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问题19如何使用SpringBoot部署到不同的服务器?您需要执行以下两个步骤:在项目中生成war文件。将其部署到您最喜欢的服务器(websphere或Weblogic或Tomcat等)。本入门指南应该有所帮助:https://spring.io/guides/gs/convert-jar-to-war/步骤2:取决于您的服务器。问题20RequestMapping和GetMapping有什么区别?RequestMapping具有类属性,可以在注解中进行GET、POST、PUT等请求方法。GetMapping是GET请求方法的特例。为清楚起见,它只是RequestMapping的扩展。问题21为什么我们不推荐在实际应用中使用SpringDataRest?我们认为SpringDataRest非常适合快速原型制作!在大型应用程序中谨慎使用。使用SpringDataREST,您可以将数据实体直接发布为RESTful服务。当您设计RESTful服务器时,实践表明您的界面应该考虑两件重要的事情:您的模型范围。你的客户。有了SpringDataREST,就不需要再考虑这两个方面了,只需要将实体发布为TEST服务即可。这就是为什么我们建议使用SpringDataRest进行快速原型制作,或作为项目的初始解决方案。对于一个完整的进化项目来说,这不是一个好主意。问题22如何在SpringInitializer中更改项目的包名?好消息是您可以自定义它。单击“转到完整版”链接。可以配置你要修改的包名!问题23在哪里可以找到可以在application.propertier中配置的完整属性列表?这是完整的指南:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html问题24JPA和Hibernate有什么区别?简而言之JPA是一个规范或者接口Hibernate是JPA的一个实现我们在使用JPA的时候,我们在javax.persistence包中使用注解和接口的时候不需要使用hibernate的import包。我们建议使用JPA注释,因为我们没有将它作为实现绑定到Hibernate。稍后(我知道-不到百分之一的机会),我们可以使用另一个JPA实现。问题25:业务边界应该从哪一层开始?我们建议在服务层管理义务。业务业务逻辑在业务层或服务层,同时你要进行的业务管理也在这一层。Question26使用SpringBoot启动连接内存数据库H2的JPA应用需要哪些依赖?在SpringBoot项目中,当您确保以下依赖项位于类路径中时,您可以加载H2控制台。webenablerh2jpadataenabler的其他依赖项如下:需要注意的事项:内部数据存储器仅在应用程序执行期间存在。这是学习框架的有效途径。这不是您希望真实世界应用程序工作的方式。在“如何连接到外部数据库?”这个问题中,我们解释了如何连接到您选择的数据库。Question27如何在不做任何配置的情况下选择Hibernate作为JPA的默认实现?因为SpringBoot是自动配置的。以下是我们添加的依赖项:spring-boot-stater-data-jpa具有对Hibernate和JPA的过渡依赖项。当SpringBoot在类路径上检测到Hibernate时,它??会自动将其配置为默认的JPA实现。Question28指定的数据库连接信息在哪里?它怎么知道自动连接到H2?这就是SpringBoot自动配置的神奇之处。来自:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.htmlSpringBoot自动配置尝试根据您拥有的jar依赖项自动配置Spring添加的应用程序。例如,如果你的类路径中存在HSQLDBis,并且没有手动配置数据库连接bean,那么我们可以自动配置一个内存数据库。延伸阅读:http://www.springboottutorial.com/spring-boot-auto-configuration问题29如何连接外部数据库,如MySQL或Oracle?让我们以MySQL为例考虑一下:1-将mysql连接器的依赖项添加到pom.xml步骤2-从pom.xml中删除H2的依赖项或至少使其成为测试范围。第3步-安装您的MySQL数据库在此处查看更多信息-https://github.com/in28minutes/jpa-with-hibernate#installing-and-setting-up-mysql第4步-配置您的MySQL数据库连接配置application.propertiesspring.jpa.hibernate.ddl-auto=nonespring.datasource.url=jdbc:mysql://localhost:3306/todo_examplespring.datasource.username=todouserspring.datasource.password=YOUR_PASSWORD第5步-重新启动,您就可以开始了!就这么简单!问题30SpringBoot默认配置的H2数据库名称是什么?为什么默认的数据库名称是testdb?在application.properties中,所有默认值都在https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html中找到如下属性#Nameofthedatasource.spring。datasource.name=testdb如果你使用的是H2内部存储数据库,它决定了SpringBoot用来安装你的H2数据库的名称。问题31如果H2不在类路径中,会出现上述情况吗?会报如下错误CannotdetermineembeddeddatabasedriverclassfordatabasetypeNONE在pom.xml中添加H2,然后重启你的服务器问题32能否举个使用ReadOnly作为事务管理的例子?当你从数据库中读取内容时,你希望将事务中的用户描述或其他描述设置为只读模式,这样Hebernate就不需要再次检查实体变化。这是非常有效的。Question33发布SpringBoot用户应用自定义配置的方式是什么?@Value的问题在于您可以通过应用程序分配您的配置值。更好的做法是采用集中式方法。您可以使用@ConfigurationProperties定义配置组件。您可以在application.properties中配置参数。basic.value:truebasic.message:DynamicMessagebasic.number:100Question34配置文件有什么要求?企业应用程序开发很复杂,您需要混合环境:DevQAStageProduction在每个环境中,您需要不同的应用程序配置。配置文件方便了不同环境下的不同应用配置。Spring和SpringBoot提供您可以指定的功能。不同配置文件中不同环境的配置是怎样的?为指定环境设置活动配置文件。SpringBoot将根据特定环境中的活动配置文件集为应用程序选择配置。问题35如何通过SpringBoot使用配置文件来配置特定环境的配置?配置文件不是搭建环境的关键。在下面的例子中,我们将在application.properties中使用两个配置文件devproddefaultapplicationconfiguration。让我们看下面的例子:application.propertiesbasic.value=truebasic.message=DynamicMessagebasic.number=100我们想为dev文件自定义application.properties属性。我们需要创建一个名为application-dev.properties的文件并覆盖我们想要自定义的属性。application-dev.propertiesbasic.message:DynamicMessageinDEV专门配置配置文件后,您需要在环境中设置活动配置文件。有多种方法可以做到这一点:在VM参数中使用Dspring.profiles.active=prod在application.properties中使用spring.profiles.active=prod
