Spring Boot CLI Spring Cloud提供Spring Boot命令行功能您可以编写Groovy脚本来运行Spring Cloud组件应用程序(例如@EnableEurekaServer)。您还可以轻松地执行加密和解密等操作,以支持具有秘密配置值的Spring Cloud Config客户端。使用Launcher CLI,您可以从命令行一次性启动Eureka,Zipkin,Config Server等服务(在开发时非常有用)。

注意
Spring Cloud根据非限制性Apache 2.0许可证发布。如果您想为文档的这一部分做出贡献,或者发现错误,请在github中找到项目中的源代码和问题跟踪器

安装

要安装,请确保您有Spring Boot CLI(1.4.4或更好):

$ spring version
Spring CLI v1.4.4.RELEASE

例如SDKMan用户

$ sdk install springboot 1.4.4.RELEASE
$ sdk use springboot 1.4.4.RELEASE

并安装Spring Cloud插件

$ mvn install
$ spring install org.springframework.cloud:spring-cloud-cli:1.2.3.RELEASE
重要
先决条件:要使用加密和解密功能,您需要在JVM中安装全面的JCE(默认情况下不存在)。您可以从Oracle下载“Java加密扩展(JCE)无限强度管理策略文件”,并按照安装说明(实际上将JRE lib / security目录中的2个策略文件替换为您下载的文件)。

在开发中运行Spring Cloud服务

Launcher CLI可以用于从命令行运行像Eureka,Config Server等常用服务。列出您可以执行的可用服务spring cloud --list,并启动spring cloud默认服务。要选择要部署的服务,只需在命令行中列出它们,例如

$ spring cloud eureka configserver h2 kafka zipkin

支持的可部署的摘要:

服务 名称 地址 描述

eureka

Eureka Server

http://localhost:8761

Eureka服务器进行服务注册和发现。所有其他服务默认显示在其目录中。

configserver

Config Server

http://localhost:8888

Spring Cloud Config服务器以“本机”配置文件运行,并从本地目录./launcher提供配置

h2

H2 Database

http://localhost:9095 (console), jdbc:h2:tcp://localhost:9096/{data}

关系数据库服务。连接时使用{data}(例如./target/test)的文件路径。请记住,您可以添加;MODE=MYSQL;MODE=POSTGRESQL来连接其他服务器类型的兼容性。

kafka

Kafka Broker

http://localhost:9091 (actuator endpoints), localhost:9092

hystrixdashboard

Hystrix Dashboard

http://localhost:7979

任何声明Hystrix断路器的Spring Cloud应用程序都会在/hystrix.stream上发布指标。将该地址键入信息中心,以便可视化所有指标,

dataflow

Dataflow Server

http://localhost:9393

Spring Cloud数据流服务器,用户名为/ admin-ui。将Dataflow shell以根路径连接到目标。

zipkin

Zipkin Server

http://localhost:9411

Zipkin具有用于可视化跟踪的UI的服务器。存储器将数据跨越内存并通过JSON数据的HTTP POST接受它们。

可以使用相同名称的本地YAML文件(在当前工作目录或名为“config”或~/.spring-cloud)的子目录中配置这些应用程序。例如,在configserver.yml中,您可能需要执行此操作来定位后端的本地git存储库:

configserver.yml
spring:
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: file://${user.home}/dev/demo/config-repo

添加其他应用程序

其他应用可以添加到./config/cloud.yml(不是./config.yml,因为这将替换默认值),例如

配置/ cloud.yml
spring:
  cloud:
    launcher:
      deployables:
        source:
          coordinates: maven://com.example:source:0.0.1-SNAPSHOT
          port: 7000
        sink:
          coordinates: maven://com.example:sink:0.0.1-SNAPSHOT
          port: 7001

列出应用程式时:

$ spring cloud --list
source sink configserver dataflow eureka h2 hystrixdashboard kafka zipkin

(注意列表开头附加的应用程序)。

编写Groovy脚本和运行应用程序

Spring Cloud CLI支持大部分Spring Cloud声明性功能,例如@Enable*注解类。例如,这是一个功能齐全的Eureka服务器

app.groovy
@EnableEurekaServer
class Eureka {}

你可以从这样的命令行运行它

$ spring run app.groovy

要包括额外的依赖关系,通常只需添加适当的特征启用注释即可,例如@EnableConfigServer@EnableOAuth2Sso@EnableEurekaClient要手动包含一个依赖关系,您可以使用特殊的“Spring Boot”短样式工件坐标(即仅使用工件ID(不需要组或版本信息))的@Grab,例如设置客户端应用程序在AMQP上聆听Spring CLoud Bus的管理事件:

app.groovy
@Grab('spring-cloud-starter-bus-amqp')
@RestController
class Service {
  @RequestMapping('/')
  def home() { [message: 'Hello'] }
}

加密和解密

Spring Cloud CLI附带一个“encrypt”和“decrypt”命令。两个接受以指定为强制“ - ”的键的相同形式的参数,例如

$ spring encrypt mysecret --key foo
682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ spring decrypt --key foo 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
mysecret

要在文件中使用密钥(例如,用于encyption的RSA公钥),使用“@”键入键值,并提供文件路径,例如

$ spring encrypt mysecret --key @${HOME}/.ssh/id_rsa.pub
AQAjPgt3eFZQXwt8tsHAVv/QHiY5sI2dRcR+...