当前位置: 首页 > 科技观察

Java开发人员应该知道的5大SpringBoot功能

时间:2023-03-14 14:13:56 科技观察

您可能听说过SpringBoot,它可以用不到140个字符创建SpringWeb应用程序的神奇力量,可以写在一条推文中,但它到底是什么意思呢?什么?是什么特性让SpringBoot如此强大,让Spring应用程序开发如此简单?好吧,这就是您将在本文中学到的内容,但是如果您赶时间,让我告诉您,您将了解更多有关SpringBoot的自动配置、Starter依赖项、SpringBootCLI、Actuator和Spring初始化器功能。这些功能消除了与编写基于Spring的JavaWeb应用程序相关的大部分痛苦和摩擦。但是,在进入细节之前,让我们重新审视与基于Spring的Java开发相关的问题。我个人喜欢在享受解决方案之前先看到问题并感受它。记住,只有努力工作才会舒服,吃饭也一样,饿的时候更享受。Spring无疑是一个伟大的框架,它为你做了很多事情,例如它为你创建了一个对象,它为它们提供了它们的依赖关系,如果Spring不存在,它会带走你写的很多代码,但反过来也对你在配置和学习上提出了很多要求。如果您曾经从事过从头开始创建全新的基于Spring的Java应用程序的全新项目,您就会知道这不是小菜一碟。您首先需要找到您需要的所有依赖项,然后找到它们的兼容版本。您还需要配置大量bean以启用一些Spring魔法。例如,如果你想在嵌入式tomcat中创建一个支持JSON格式的基于SpringMVC的REST应用程序,那么你的Mavenpom.xml文件中至少有8到10个依赖项,如spring-core.jar、spring-mvc.jar、jackson.jar、embedded-tomcat.jar等。请注意,这是一个非常简单的设置。SpringBoot只是消除了所有这些痛苦,让您编写重要的代码,即应用程序代码。我提到的所有SpringBoot功能,例如自动配置、StarterPOM或Starter依赖项以及SpringBootCLI,旨在简化Spring的Java开发。现在,让我们更详细地了解这些功能中的每一个1.自动配置您可能使用过基于Spring的JavaWeb应用程序,该应用程序连接到关系数据库,例如像H2这样的内存数据库,如果是,那么您可能知道您需要将JdbcTemplate声明为一个bean,并配置一个DataSource,它是JdbcTemplate的依赖项。要在基于Java的现代Spring应用程序中使用配置,您需要将以下两个方法添加到您的配置类:@豆publicJdbcTemplatejdbcTempalte(DateSourceds){返回新的JdbcTempalte(ds);}/font>@豆/font>公共数据源数据源(){返回新的EmbeddedDatabaseBuilder()。setType(EmbeddedDatabaseType.H2).addScripts('ddl.sql','data.sql')build();}对于做过Spring开发的人来说,这不是一个复杂的问题,但如果重新开始,可能需要数小时甚至数天才能弄清楚。但是,更重要的是,它是我们许多人编写的一段代码,与我们的应用程序无关。我的意思是,这段代码不是唯一的,每个使用JDBC的Spring应用程序都需要它。这就是SpringBootAutoConfiguration发挥作用的地方。它检测类路径中是否存在类,然后自动为您配置它。例如,如果你已经将JdbcTempalte添加到类路径和H2.jar,那么SpringBoot可以自动为你配置一个内存数据库和一个JdbcTempatle以供使用。在DAO层使用JdbcTemplate不需要写上面的代码。这只是一个例子。SpringBoot自动配置做出200多个这样的决定,并通过检查JAR依赖关系自动配置许多功能。例如,如果spring-mvc.jar存在,它可以自动配置DispatcherServlet、InternalViewResolver等。如果JPA和Hibernate存在,那么它也可以配置,如果你有spring-security.jar,那么它甚至可以配置一个保护您的应用程序的基本安全性。顺便说一句,当依赖自动配置时,需要深入的知识才能正确保护您的应用程序。默认情况下禁用自动配置功能,您需要通过在配置类上使用@EnableAutoConfiguration或@SpringBootApplication注解来启用它。我通常注释Main类,我将使用嵌入式Tomcat服务器运行它。建议从SpringBoot1.2开始使用@SpringBootApplication注解,因为它结合了其他几个注解,使您的代码更具可读性。简而言之,SpringBoot的自动配置功能可以节省大量工作并减少开发时间,我强烈建议您在使用SpringBoot时使用自动配置。2.StarterPOM尽管AutoConfiguration消除了配置常用功能的痛苦,但StarterPOM通过在项目中查找和添加通用依赖来消除痛苦。为了构建一个简单的基于SpringMVC的支持Jackson的REST应用程序并将其运行在嵌入式容器中,您至少需要以下依赖项,例如spring-core.jarspring-web.jarspring-webmvc.jarJackson-databind.jartomcat-embed-core.jarfont>tomcat-embed-el.jartomcat-embed-logging-juil.jar通过使用SpringBootStarterPOM或starter依赖特性,您只需在pom.xml中添加spring-boot-starter-web依赖即可获得所有这些,因此无需添加所有这些依赖项并担心它们的兼容版本,你可以只添加一个你也会更有信心你正在使用库的久经考验的版本并且你将来不会有任何不兼容。启动POM特性的另一个微妙的好处是您不需要记住或搜索依赖项。如果您正在构建一个Web应用程序,您可以添加一个“web”启动器,如果您正在构建一个JPA应用程序,您可以添加一个“jpa”启动器。SpringBoot通过按功能聚合常见依赖项,使它们易于记忆和理解。使用。顺便说一句,如果您想知道StarterPOM功能在内部是如何工作的,让我告诉您,所有的魔力都来自Maven或Gradle的传递依赖项功能。拉取正确版本库的是Maven或Gradle,StarterPOM只需要声明它们。如果您想了解更多信息,我建议您查看DanVega的使用SpringBoot进行快速应用程序开发课程。简而言之,StarterPOM或starterdependencies是SpringBoot的另一大特性,它真正有助于简化Spring应用程序的开发。它就像自动配置的近亲,您将经常一起使用它们。3.SpringBootCLI在本文的第一段中,我说过现在可以创建适合发推文的JavaWeb应用程序,这要归功于Groovy和SpringBootCLI。SpringBootCLI是SpringBoot框架提供的命令行界面,允许您使用Groovy编程语言创建基于Spring的Web应用程序。事实上,Groovy和SpringBoot可以很好地互补,Groovy旨在简化Java开发,而SpringBoot旨在简化Spring应用程序开发,两者都受益于彼此的简单性。虽然自动配置和启动器依赖项是SpringBoot不可或缺的一部分,但SpringCLI是一项可选功能,您还需要安装SpringCLI才能使用它。这是Groovy和SpringBootCLI中的一个简单的HelloWorldRESTfulWeb服务,即使不编译也可以工作:@RestControllerClassHelloSpringBootController{@RequestMapping("/")定义hello(){返回“HelloSpringBootCLI”}就是这样,你可以在SpringBootCLI自带的嵌入式容器上运行,不用web.它是如何工作的,即Groovy如何知道@RestController和@RequestMapping注释,所以让我告诉你SpringBootCLI利用自动配置和启动POM功能让你只专注于编写应用程序代码?SpringBootCLI检测到@RestController和@RequestMapping正在使用它,并且它知道需要将哪些启动器依赖项添加到类路径才能使其工作。一旦下载了这个依赖列表,auto-configuration就会自动启动并配置使用,比如一旦spring-boot-web-starter出现,它就会下载spring-mvc.jar,然后auto-configuration将自动配置DispatcherServlet并启用SpringMVC。整个事情看起来像魔术,但这是现实。4.ActuatorActuator是SpringBoot的另一个很棒的特性,它允许查看正在运行的SpringBoot应用程序中发生了什么。凭借其自动配置的所有优势,存在不知道应用程序内部内容的风险,而SpringActuator解决了该风险。它提供了很多关于在生产中运行应用程序的见解和指标。例如,通过使用Actuator,您可以准确地看到在应用程序上下文中配置了哪些bean,做出了哪些自动配置决策,应用程序可以使用哪些环境变量、系统属性、命令行参数等等。您甚至可以跟踪应用程序处理的HTTP请求,以及各种有用的应用程序指标,例如CPU和内存使用情况、垃圾收集详细信息、Web请求和数据源使用情况。SpringBootActuator还提供了几个端点来检索这些数据,例如,您可以使用RESTfulAPI来获取所有这些信息,或者您可以使用其远程shell功能安全地进入应用程序并通过发出命令来获取所有这些信息。它还使用JMXMBeans公开所有这些功能,这意味着您可以在运行时使用JMX客户端(如JConsole)控制它们。同时,您还需要保护对Actuator端点的访问,因为它不仅会暴露机密信息,而且很危险。例如,任何人都可以使用/shutdown端点来停止您的应用程序。但是,您不必担心。与任何其他Spring应用程序一样,您可以使用SpringSecurity来保护您的Actuator端点。5.SpringBootinitializerSpringInitializer是SpringBoot的另一个特性,它解决了项目结构的问题。它是一个Web应用程序,允许您使用Java、Kotline或Groovy和SpringBoot生成Maven或Gradle项目。您需要指定的只是在GUI中提供项目元数据,例如项目名称、组、工件等。它还允许您从大型列表中选择启动器依赖项,例如Web、JPA或安全启动器。可以在https://start.spring.io/访问SpringInitializer项目。创建项目后,您可以下载Zip文件并打开IDE,例如Eclipse或IntelliJIDEA,如NelsonDjalo的SpringBootEssential课程中所述。然后您可以编辑此示例项目以放置您的代码。根据我的经验,许多Java和Spring开发人员面临的常见问题之一是开始一个项目。他们中的许多人不知道是否要放置您的Java文件、资源文件等。虽然Maven、Gradle、IntelliJIDEA和Eclipse可以帮助您提供基本结构,但您仍然需要精通这两种技能才能获得抢先一步,如果您不熟悉Maven或您的IDE,这可能是一场噩梦。SpringBootInitaizer解决了这个问题,使创建基于Spring的Java应用程序变得容易,而无需真正了解SpringFramework的大量内部细节。以上就是Java开发人员应该知道的SpringBoot的一些基本特性。这些特性确实使使用Java和Spring的工作变得有趣和高效,这就是为什么越来越多的公司采用SpringBoot进行Java开发。具有SpringBoot经验的Java开发人员也很受欢迎,如果您正在寻找JavaWeb开发人员的下一份工作,那么SpringBoot技能真的可以发挥作用。