Spring Boot CLIの紹介

Spring Boot CLIの概要

1. 前書き

Spring Boot CLIはcommand-line abstraction that allows us to easily run Spring micro-services expressed as Groovy scriptsです。 また、これらのサービスの依存関係管理を簡素化および強化します。

この短い記事では、how to configure Spring Boot CLI and execute simple terminal commands to run pre-configured micro-servicesについて簡単に説明します。

この記事では、Spring Boot CLI2.0.0.RELEASEを使用します。 Spring Boot CLIの最新バージョンは、Maven Centralにあります。

2. Spring BootCLIのセットアップ

Spring Boot CLIを設定する最も簡単な方法の1つは、SDKMANを使用することです。 SDKMANのセットアップとインストールの手順は、hereにあります。

SDKMANをインストールした後、次のコマンドを実行して、Spring Boot CLIを自動的にインストールおよび構成します。

$ sdk install springboot

インストールを確認するには、次のコマンドを実行します。

$ spring --version

ソースからコンパイルしてSpringBoot CLIをインストールすることもでき、MacユーザーはHomebrewまたはMacPortsのビルド済みパッケージを使用できます。 すべてのインストールオプションについては、公式のdocsを参照してください。

3. 一般的なターミナルコマンド

Spring Boot CLIは、すぐに使える便利なコマンドと機能を提供します。 最も便利な機能の1つは、必要なspringプレフィックスでコマンドをラップするSpringShellです。

start the embedded shellに対して、次を実行します。

spring shell

ここから、springキーワードを先頭に追加せずに、目的のコマンドを直接入力できます(現在、Springシェルを使用しているため)。

たとえば、次のように入力することで、実行中のCLIのdisplay the current versionを実行できます。

version

最も重要なコマンドの1つは、Spring BootCLIにGroovyスクリプトを実行するように指示することです。

run [SCRIPT_NAME].groovy

Spring Boot CLIは、自動的に依存関係を推測するか、正しく提供された注釈が与えられると推測します。 この後、組み込みのWebコンテナとアプリが起動します。

Spring BootCLIでGroovyスクリプトを使用する方法を詳しく見てみましょう。

4. 必須のGroovyスクリプト

GroovyとSpringは、Spring Boot CLIと一緒にallow powerful, performant micro-services to be quickly scripted in single-file Groovy deploymentsになります。

マルチスクリプトアプリケーションのサポートには、通常、MavenGradleなどの追加のビルドツールが必要です。

以下では、Spring Boot CLIの最も一般的な使用例のいくつかを取り上げ、他の記事用にさらに複雑なセットアップを予約します。

SpringでサポートされているすべてのGroovyアノテーションのリストについては、公式のdocsを確認してください。

4.1. @Grab

@GrabアノテーションとGroovyのJava風のimport句により、easy dependency management and injectionが可能になります。

実際、ほとんどの注釈は、必要なインポート文を抽象化し、単純化し、自動的に組み込みます。 これにより、展開するサービスのアーキテクチャおよび基礎となるロジックについて考える時間を増やすことができます。

@Grabアノテーションの使用方法を見てみましょう。

package org.test

@Grab("spring-boot-starter-actuator")

@RestController
class ExampleRestController{
  //...
}

ご覧のとおり、spring-boot-starter-actuator comes pre-configured allowing for succinct script deployment without requiring a customized application or environmental properties, XML, or other programmatic configurationですが、必要に応じてそれぞれを指定できます。

@Grab引数の完全なリスト(それぞれがダウンロードおよびインポートするライブラリを指定)は、hereで利用できます。

4.2. @Controller, @RestController,および@EnableWebMvc

展開をさらに促進するために、代わりにutilize Spring Boot CLI’s provided “grab hints” to automatically infer correct dependencies to importを使用することもできます。

以下では、最も一般的な使用例のいくつかについて説明します。

たとえば、おなじみの@Controllerおよび@Serviceアノテーションをquickly scaffold a standard MVC controller and serviceに使用できます。

@RestController
class Example {

    @Autowired
    private MyService myService;

    @GetMapping("/")
    public String helloWorld() {
        return myService.sayWorld();
    }
}

@Service
class MyService {
    public String sayWorld() {
        return "World!";
    }
}

Spring Boot CLIは、Spring Bootのすべてのデフォルト設定をサポートしています。 したがって、Groovyアプリは通常のデフォルトの場所から静的リソースに自動的にアクセスできます。

4.3. @EnableWebSecurity

add Spring Boot Security options to our appには、@EnableWebSecurityアノテーションを使用できます。これは、Spring BootCLIによって自動的にダウンロードされます。

以下では、spring-boot-starter-security依存関係を使用してこのプロセスの一部を抽象化します。これは、内部で@EnableWebSecurityアノテーションを活用します。

package bael.security

@Grab("spring-boot-starter-security")

@RestController
class SampleController {

    @RequestMapping("/")
    public def example() {
        [message: "Hello World!"]
    }
}

リソースを保護し、セキュリティを処理する方法の詳細については、公式のdocumentationを確認してください。

4.4. @Test

set up a simple JUnit testに、@Grab(‘junit')または@Testアノテーションを追加できます。

package bael.test

@Grab('junit')
class Test {
    //...
}

これにより、JUnitテストを簡単に実行できます。

4.5. DataSourceおよびJdbcTemplate

DataSourceまたはJdbcTemplatewithout explicitly using the @Grab annotationを含む永続データオプションを指定できます。

package bael.data

@Grab('h2')
@Configuration
@EnableWebMvc
@ComponentScan('bael.data')
class DataConfig {

    @Bean
    DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
          .setType(EmbeddedDatabaseType.H2).build();
    }

}

By simply using familiar Spring bean configuration conventions、H2組み込みデータベースを取得し、DataSourceとして設定しました。

5. カスタム構成

Spring Boot CLIを使用してSpring Bootマイクロサービスを設定するには、主に2つの方法があります。

  1. 端末コマンドに引数パラメータを追加できます

  2. カスタマイズされたYAMLファイルを使用して、アプリケーション構成を提供できます

Spring Bootは、/configディレクトリでapplication.ymlまたはapplication.propertiesを自動的に検索します

├── app
    ├── app.groovy
    ├── config
        ├── application.yml
    ...

以下も設定できます。

├── app
    ├── example.groovy
    ├── example.yml
    ...

アプリケーションプロパティの完全なリストは、Springのhereにあります。

6. 結論

これで、Spring Boot CLIの簡単なウォークスルーが完了しました! 詳細については、公式のdocsを確認してください。

そしていつものように、この記事のソースコードはover on GitHubにあります。