微服务 spring boot 译<四> SpringBoot CLI

SpringBoot是一个自成体系的Java框架,用于构建基于Spring依赖注入框架的微服务。SpringBoot允许开发人员通过减少样板、配置和开发人员摩擦来创建微服务。这是一种类似于我们将要研究的另外两个框架。

SpringBoot做了以下的:

  • 默认支持自动、常规配置

  • 整理常用的启动程序依赖项集,以便于使用

  • 简化应用程序打包

  • 洞悉应用(例如,度量和环境信息)

Simplified Configuration

从 Spring 历史上看,配置是一场噩梦。尽管该框架在其他模型(EJB1.x、2.x等)的基础上进行了改进,但它确实附带了自己的一组重量级使用模式。也就是说,Spring 需要大量的 XML 配置和对构建jdbcTemplate、jmsTemplate、BeanFactory生命周期挂钩、servlet侦听器和许多其他组件所需的单个bean的深入理解。实际上,在DispatcherServlet和一系列模型-视图-控制器类的支持下,用SpringMVC编写一个简单的“helloworld”。SpringBoot的目标是用一些隐含的约定和简化的注释消除所有这些样板配置--不过,如果需要的话,您仍然可以对底层bean进行精细的调优。

Starter Dependencies

Spring被用于大型企业应用程序中,这些应用程序通常使用大量不同的技术来完成繁重的工作:jdbc数据库、消息队列、文件系统、应用程序级缓存等。开发人员必须停止她正在做的事情,切换认知上下文,找出哪些依赖关系属于哪一段函数性(“哦,我需要JPA依赖关系!”),并花费大量时间来解决版本不匹配或在尝试使用这些不同部分时可能出现的问题。SpringBoot为添加这些功能提供了大量精选的库集合。这些初学者模块允许您添加如下内容:

  • JPA persistence

  • NoSQL数据库,如 MongoDB, Cassandra, Couchbase

  • Redis caching

  • Tomcat/Jetty/Undertow servlet engine

  • JTA transactions

将子模块添加到应用程序中会引入一组经过组织的可传递依赖项和已知可以协同工作的版本,从而使开发人员不必自己对依赖项进行排序。

Application Packaging

Spring Boot实际上是一组引导库,具有一些配置约定,但没有理由不能在现有应用服务器内运行Spring Boot应用程序(作为WAR)。大多数使用 SpringBoot 的开发人员喜欢的习惯用法是应用程序的自包含 JAR 打包。这意味着 SpringBoot 将所有依赖项和应用程序代码打包到一个具有平面类加载器的自包含JAR中。这使得理解应用程序启动、依赖顺序和日志语句变得更容易;但更重要的是,它有助于减少将应用程序安全投入生产所需的移动部件的数量。这个 SpringBootforMicroservices 意味着你不需要把一个应用程序扔进一个应用服务器;这个应用程序一旦构建好,就可以独立运行了--包括嵌入自己的servlet容器(如果它使用servlet的话)。没错,一个简单的java-jar<name.jar>就足以启动您的应用程序了!SpringBoot、DropWizard 和 WildFlySwarn 都遵循这种模式,将所有内容打包到一个可执行的 JAR 中。

但是,我们通常期望从应用服务器中得到的管理又是什么呢?

Production Ready

SpringBoot 附带了一个名为执行器的模块,它支持有关应用程序的度量和统计等功能。例如,我们可以收集日志、查看度量、执行线程转储、显示环境变量、理解垃圾收集以及显示 BeanFactory 中配置了哪些bean。您可以通过HTTP、JMX公开这些信息,甚至可以通过SSH直接登录到该进程。

有了Spring Boot,我们就可以利用Spring框架的强大功能,减少样板配置和代码,从而更快地构建功能强大、可生产的微服务。让我们看看怎么做。

Getting Started

我们将使用SpringBoot命令行接口(CLI)引导我们的第一个SpringBoot应用程序(CLI在幕后使用SpringInitializr)。如果您对CLI感到不舒服,您可以自由地探索不同的方法来实现这一点。其他选择包括为您喜欢的IDE使用SpringInitializr插件,或者访问SpringInitializr的Web版本。SpringBootCLI可以通过几种不同的方式安装,包括通过包管理器和直接从网站下载。请检查有关安装最适合您的开发环境的CLI的说明。

一旦安装了CLI工具,就应该能够检查Spring的版本:

$ spring --version
    Spring CLI v1.3.3.RELEASE

如果您可以看到安装CLI的版本,那么恭喜您!现在,导航到一个目录,您想要在其中存放来自书中的示例,并运行以下命令:

spring init --build maven --groupId com.redhat.examples \

--version 1.0 --java-version 1.8 --dependencies web \

--name hola-springboot hola-springboot

在运行此命令之后,您应该有一个名为hola-Spring的目录,其中包含一个完整的SpringBoot应用程序。如果运行该命令并以demo.zip结束,则只需解压缩并继续。让我们快速了解一下这些命令行选项是什么。

--build

我们现在想要使用的构建管理工具maven或gradle是两个有效的选项。

--groupId

在我们的maven中使用的groupId是我们的app.xml的坐标;不幸的是,这并没有正确地扩展到创建的Java包名称。这些都需要手工修改

--version

应用程序的版本;将在以后的迭代中使用,因此设置为1.0。

-- java-version

允许我们指定JDK的编译版本

--dependencies

这是一个有趣的参数;我们可以指定完全成熟的依赖集来进行常见类型的开发。例如,Web将设置SpringMVC并嵌入一个内部Servlet引擎(默认情况下为Tomcat;Jetty和 Undertow为选项)。其他方便的依赖包/启动程序包括JPA、安全性和Cassandra)。

现在,如果您到hola-Spring引导目录,请尝试运行以下命令:

$ mvn spring-boot:run

如果一切都引导起来没有任何错误,您应该会看到一些类似这样的日志记录

恭喜你!您已经快速获得了一个SpringBoot应用程序并开始运行!您甚至可以在浏览器中导航到http://localhost:8080,并应该看到以下输出:

这个默认的错误页面是预期的,因为我们的应用程序还没有做任何事情!让我们进入下一节,添加一个REST,以组合一个hello-world用例!

原文:

作者源码:https://github.com/redhat-developer/microservices-by-example-source

猜你喜欢

转载自my.oschina.net/u/2277632/blog/1787800
今日推荐