SpringBootCLIの概要
1. 序章
Spring Boot CLIはコマンドライン抽象化であり、Groovyスクリプトとして表現されたSpringマイクロサービスを簡単に実行できます。 また、これらのサービスの依存関係管理を簡素化および強化します。
この短い記事では、 Spring Boot CLIを構成し、簡単なターミナルコマンドを実行して事前構成されたマイクロサービスを実行する方法について簡単に説明します。
この記事では、Spring BootCLI2.0.0.RELEASEを使用します。 Spring Boot CLIの最新バージョンは、 MavenCentralにあります。
2. SpringBootCLIのセットアップ
Spring Boot CLIを設定する最も簡単な方法の1つは、SDKMANを使用することです。 SDKMANのセットアップとインストールの手順は、ここにあります。
SDKMANをインストールした後、次のコマンドを実行して、SpringBootCLIを自動的にインストールおよび構成します。
$ sdk install springboot
インストールを確認するには、次のコマンドを実行します。
$ spring --version
ソースからコンパイルしてSpringBootCLIをインストールすることもでき、MacユーザーはHomebrewまたはMacPortsのビルド済みパッケージを使用できます。 すべてのインストールオプションについては、公式のdocsを参照してください。
3. 一般的なターミナルコマンド
Spring Boot CLIは、すぐに使用できるいくつかの便利なコマンドと機能を提供します。 最も便利な機能の1つは、必要なspringプレフィックスでコマンドをラップするSpringShellです。
組み込みシェルを起動するには、次のコマンドを実行します。
spring shell
ここから、 spring キーワードを前に付けることなく、目的のコマンドを直接入力できます(springシェルになっているため)。
たとえば、次のように入力して、実行中のCLIの現在のバージョンを表示できます。
version
最も重要なコマンドの1つは、SpringBootCLIにGroovyスクリプトを実行するように指示することです。
run [SCRIPT_NAME].groovy
Spring Boot CLIは、依存関係を自動的に推測するか、正しく指定されたアノテーションを指定して推測します。 この後、埋め込まれたWebコンテナとアプリを起動します。
Spring BootCLIでGroovyスクリプトを使用する方法を詳しく見てみましょう。
4. エッセンシャルGroovyスクリプト
GroovyとSpringはSpringBootCLIと連携して、単一ファイルのGroovyデプロイメントで強力でパフォーマンスの高いマイクロサービスをすばやくスクリプト化できるようにします。
マルチスクリプトアプリケーションのサポートには、通常、MavenやGradleなどの追加のビルドツールが必要です。
以下では、Spring Boot CLIの最も一般的な使用例のいくつかを取り上げ、他の記事用にさらに複雑なセットアップを予約します。
SpringでサポートされているすべてのGroovyアノテーションのリストについては、公式のドキュメントをご覧ください。
4.1. @Grab
@Grab アノテーションとGroovyのJava風のインポート句により、簡単な依存関係の管理とインジェクションが可能になります。
実際、ほとんどの注釈は、必要なインポートステートメントを抽象化し、単純化し、自動的に含めます。 これにより、展開するサービスのアーキテクチャと基盤となるロジックについて考える時間を増やすことができます。
@Grabアノテーションの使用方法を見てみましょう。
package org.test
@Grab("spring-boot-starter-actuator")
@RestController
class ExampleRestController{
//...
}
ご覧のとおり、 spring-boot-starter-actuatorは事前構成されており、カスタマイズされたアプリケーションや環境プロパティ、XML、またはその他のプログラム構成を必要とせずに、簡潔なスクリプト展開が可能です。必要に応じて指定します。
@Grab 引数の完全なリスト(それぞれがダウンロードおよびインポートするライブラリを指定)は、こちらで入手できます。
4.2. @ Controller、@ RestController、および @EnableWebMvc
展開をさらに迅速化するために、代わりに Spring Boot CLIが提供する「グラブヒント」を利用して、インポートする正しい依存関係を自動的に推測することもできます。
以下では、最も一般的なユースケースのいくつかについて説明します。
たとえば、おなじみの@Controllerおよび@Serviceアノテーションを使用して、標準のMVCコントローラーおよびサービスをすばやくスキャフォールディングできます。
@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は、SpringBootのすべてのデフォルト構成をサポートします。 したがって、Groovyアプリは、通常のデフォルトの場所から静的リソースに自動的にアクセスできます。
4.3. @ EnableWebSecurity
アプリにSpringBoot Securityオプションを追加するには、 @EnableWebSecurity アノテーションを使用できます。このアノテーションは、SpringBootCLIによって自動的にダウンロードされます。
以下では、 spring -boot-starter-security 依存関係を使用してこのプロセスの一部を抽象化します。これは、内部で@EnableWebSecurityアノテーションを活用します。
package bael.security
@Grab("spring-boot-starter-security")
@RestController
class SampleController {
@RequestMapping("/")
public def example() {
[message: "Hello World!"]
}
}
リソースを保護し、セキュリティを処理する方法の詳細については、公式のドキュメントを確認してください。
4.4. @テスト
簡単なJUnitテストを設定するには、 @Grab(’junit’)または@Testアノテーションを追加できます。
package bael.test
@Grab('junit')
class Test {
//...
}
これにより、JUnitテストを簡単に実行できるようになります。
4.5. データソースおよびJdbcTemplate
@Grabアノテーションを明示的に使用せずに、DataSourceまたはJdbcTemplateを含む永続データオプションを指定できます。
package bael.data
@Grab('h2')
@Configuration
@EnableWebMvc
@ComponentScan('bael.data')
class DataConfig {
@Bean
DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2).build();
}
}
おなじみのSpringbean構成規則を使用するだけで、H2組み込みデータベースを取得し、DataSourceとして設定しました。
5. カスタム構成
SpringBootCLIを使用してSpringBootマイクロサービスを構成する主な方法は2つあります。
- ターミナルコマンドに引数パラメータを追加できます
- カスタマイズされたYAMLファイルを使用してアプリケーション構成を提供できます
Spring Bootは、 /configディレクトリでapplication.ymlまたはapplication.propertiesを自動的に検索します
├── app
├── app.groovy
├── config
├── application.yml
...
次の設定もできます。
├── app
├── example.groovy
├── example.yml
...
アプリケーションプロパティの完全なリストは、Springのここにあります。
6. 結論
これで、SpringBootCLIの簡単なウォークスルーは終了です。 詳細については、公式のドキュメントをご覧ください。
そしていつものように、この記事のソースコードはGitHubのにあります。