これは何?
micronaut のユーザーガイドのどこをを読めばいいかのメモ。
対象は ver1.3.4 のドキュメント。
1 Introduction
いわゆる「説明」。背景の説明あり。
1.1 What's New?
過去バージョンからの変更履歴。依存ライブラリの記述あり。
2 Quick Start
2章全体で、 Hello world アプリを作るまでの手順を解説。
2.1 Build/Install the CLI
さまざまなインストール方法の解説。
2.1.1 Install with Sdkman
中略。
2.1.2 Install with Homebrew
中略。
2.1.3 Install with MacPorts
中略。
2.1.4 Install through Binary on Windows
中略。
2.1.5 Building from Source
中略。
2.2 Creating a Server Application
アプリケーション作成の手順を順に説明。
単純なcontrollerのソースと、@Controller
, @Get
アノテーションの説明あり。
2.3 Setting up an IDE
各IDEの説明だけでなく、mainクラスの説明も。
2.4 Creating a Client
micronaut が持つ HTTP client 機能の利用法サンプル。
テストクラス作成の過程で各機能を説明。
2.5 Deploying the Application
実行可能jarファイルの作り方。
具体的には以下のどちらか。
./gradlew assemble
./mvnw package
3 Inversion of Control
3章は、いわゆるDIの実現方法について。
3.1 Defining Beans
Beanの定義例。
3.2 How Does it Work?
Beanが裏でどう動いているかの説明。
3.3 The BeanContext
BeanContext
インターフェースの概要。
3.4 Injectable Container Types
Beanを扱う方法の一覧表あり。
3.5 Bean Qualifiers
Beanの選ばれ方について。
- 名前による
- アノテーションによる
- Beanの優先度(
@Primary
アノテーション)
3.6 Scopes
Beanのスコープ(生存範囲)について。
3.6.1 Built-In Scopes
既定のスコープの表。
3.6.2 Refreshable Scope
任意のタイミングでクリアできる@Refreshable
スコープについて。
3.6.3 Scopes on Meta Annotations
スコープの指定方法について。
3.7 Bean Factories
Beanを生成する@Factory
アノテーションと、nullを返していい条件について。
3.8 Conditional Beans
条件を設定する@Requires
アノテーションについて。
条件付きBean生成のデバッグ方法も。
3.9 Bean Replacement
Beanを入れ替える@Replaces
アノテーションについて。
使用例として、実装を推奨する@DefaultImplementation
を説明。
3.10 Bean Configurations
Beanをグルーピングする@Configuration
アノテーションについて。
3.11 Life-Cycle Methods
Beanの生成/破棄時に実行される@PostConstruct
、@PreDestroy
アノテーションについて。
3.12 Context Events
pub/sub的に使えるイベント機構について。
3.13 Bean Events
@PostConstruct
の前後にさらに細かく制御するための、BeanInitializedEventListener
, BeanCreatedEventListener
について。
3.14 Bean Introspection
クラスの情報を取得する Introspector クラスの挙動について。
3.15 Bean Validation
Beanのバリデーションについて。
micronaut標準ではバリデーションをサポートしているものの、仕様完全準拠ではないことに注意。
3.16 Bean Annotation Metadata
アノテーションの拡張について。
3.17 Micronaut Beans And Spring
Springとの連携について。
3.18 Android Support
Android開発について。
4 Application Configuration
4章は、アプリケーションの構成と設定の渡し方について。
4.1 The Environment
環境変数による基本的な手段について。
4.2 Externalized Configuration with PropertySources
PropertySources
を用いた方法について。
4.3 Configuration Injection
@Value
アノテーションによる参照について。
4.4 Configuration Properties
タイプセーフな設定を実現する@ConfigurationProperties
アノテーションについて。
4.5 Custom Type Converters
独自形式をサポートするためのTypeConverter
クラスについて。
4.6 Using @EachProperty
to Drive Configuration
@EachProperty
アノテーションによる個別設定の実現について。
4.7 Using @EachBean
to Drive Configuration
@EachBean
アノテーションによるBeanの切り替えについて。
4.8 Immutable Configuration
イミュータブルのサポートについて。
4.9 JMX Support
JMX(Java Management Extensions) について。
5 Aspect Oriented Programming
5章は、AOP(アスペクト志向プログラミング)について。
5.1 Around Advice
Around Advice
と、アドバイスの書き方について。
例として、スタブ値を設定する@Stub
アノテーションの説明あり。
5.2 Introduction Advice
実装を提供する形式のIntroduction Advice
について。
5.3 Method Adapter Advice
メソッドに修飾するMethod Adapter Advice
について。
例として@EventListener
アノテーション。
5.4 Validation Advice
バリデーションについて。詳細はJSR 380を参照。
5.5 Cache Advice
キャッシュを制御するCache Advice
と、キャッシュ機構について。
5.6 Retry Advice
リトライを制御するRetry Advice
について。
例として@Retryable
アノテーションと@CircuitBreaker
アノテーション。
5.7 Scheduled Tasks
バックグラウンドタスクのスケジュール使える@Scheduled
アノテーションと、バックグラウンドタスクの制御について。
5.8 Bridging Spring AOP
Spring AOPとの連携について。
6 The HTTP Server
6章は、HTTPサーバーとの連携について。
6.1 Running the Embedded Server
組み込みサーバーについて。
6.2 Running Server on a Specific Port
組み込みサーバーのポート番号の指定について。
6.3 HTTP Routing
URIパスの指定について。
6.4 Simple Request Binding
URIパラメータやCookieのバインディングについて。
6.5 Host Resolution
ホスト名の取得方法について。
6.6 Client IP Address
クライアントIPアドレスの取得方法について。
6.7 The HttpRequest and HttpResponse
HTTPリクエスト情報の詳細について。
6.8 Response Status
HTTPレスポンスコードについて。
6.9 Response Content-Type
レスポンスのコンテンツタイプの指定方法について。
6.10 Accepted Request Content-Type
リクエストのコンテンツタイプの指定方法について。
6.11 Reactive HTTP Request Processing
リアクティブ処理について。
6.11.1 Using the @Body
Annotation
データを受け取る@Body
アノテーションについて。
6.11.2 Reactive Responses
レスポンスの返し方について。
6.12 JSON Binding with Jackson
JSONの扱い方について。
6.13 Data Validation
バリデーションについて。
6.14 Serving Static Resources
静的リソースについて。
6.15 Error Handling
エラー処理や例外ハンドリングについて。
6.16 API Versioning
APIのバージョン管理について。
6.17 Handling Form Data
フォームデータの処理について。
6.18 Writing Response Data
応答の返し方、特にノンブロッキングI/Oについて。
6.19 File Uploads
ファイルアップロードの処理について。
6.20 File Transfers
ファイル送信の方法について。
6.21 HTTP Filters
HTTPフィルタについて。
6.22 HTTP Sessions
セッション管理の方法について。
6.23 Server Sent Events
サーバー送信イベントの使い方について。
6.24 WebSocket Support
WebSocket
サポートの概要。
6.24.1 Using @ServerWebSocket
URIにマッピングする@ServerWebSocket
について。
6.24.2 Using @ClientWebSocket
micronaut側はクライアントとなる@ClientWebSocket
について。
6.25 Server Events
サーバーイベントとそのリスナーについて。
6.26 Configuring the HTTP Server
HTTPサーバーの設定について。
6.26.1 Configuring Server Thread Pools
HTTPサーバーのスレッド構成について。
6.26.2 Configuring CORS
CORS(Cross Origin Resource Sharing)について。
6.26.3 Securing the Server with HTTPS
HTTPSサポートと証明書使用について。
6.26.4 Enabling HTTP and HTTPS
HTTP/HTTPSの有効化について。
6.27 Server Side View Rendering
サーバーサイドレンダリングの紹介。
6.28 OpenAPI / Swagger Support
OpenAPIとの連携の紹介。
6.29 GraphQL Support
GraphQLサポートの紹介。
7 The HTTP Client
7章は、組み込まれているHTTPクライアント機能について。
7.1 Using the Low-Level HTTP Client
基本機能のHttpClient
インターフェースと、Flowable
なRxHttpClient
がある。
7.1.1 Sending your first HTTP request
基本的な使用方法、デバッグ方法の解説。
7.1.2 Posting a Request Body
リクエストの送信方法について。
一部をパラメータ化するURIテンプレート機能の紹介。
7.1.3 Multipart Client Uploads
マルチパートリクエストの送信方法について。
7.1.4 Streaming JSON over HTTP
ストリーミング通信について。
7.1.5 Configuring HTTP clients
HTTPクライアントの設定について。
7.1.6 Error Responses
400以上のレスポンスが返された場合、HttpClientResponseException
例外が発生。
7.1.7 Bind Errors
リクエストのバインドエラーについて。
7.2 Declarative HTTP Clients with @Client
@Client
アノテーションを使用したクライアントの動作について。
7.2.1 Customizing Parameter Binding
パラメータのバインディングについて。
7.2.2 Streaming with @Client
ストリーミングのクライアント処理について。
7.2.3 Error Responses
通信エラーのハンドリングについて。
7.2.4 Customizing Request Headers
リクエストヘッダーのカスタマイズ方法について。
7.2.5 Customizing Jackson Settings
Jacksonの設定方法について。
7.2.6 Retry and Circuit Breaker
リトライ制御について。
7.2.7 Client Fallbacks
障害発生時のフォールバック機構について。
7.2.8 Netflix Hystrix Support
フォールトトレランスのサポートについて。
7.3 HTTP Client Filters
クライアントとしてのHTTPフィルタについて。
7.4 HTTP Client Sample
サンプルはチュートリアルを参照。
8 Cloud Native Features
8章は、クラウド対応について。
8.1 Cloud Configuration
提供されている対応環境について。
8.1.1 Distributed Configuration
分散されたマイクロサービスでの共有について。
8.1.2 HashiCorp Consul Support
HashiCorp Consul対応について。
8.1.3 HashiCorp Vault Support
HashiCorp Vault対応について。
8.1.4 Spring Cloud Config Support
Spring Cloud対応について。
8.1.5 AWS Parameter Store Support
AWS Parameter Store対応について。
8.2 Service Discovery
サービスディスカバリ機能について。
8.2.1 Consul Support
Consul対応について。
8.2.2 Eureka Support
Eureka対応について。
8.2.3 Kubernetes Support
Kubernetes対応について。
8.2.4 AWS Route 53 Support
AWS Route 53対応について。
8.2.5 Manual Service Discovery Configuration
サービスディスカバリの手動設定について。
8.3 Client Side Load Balancing
サービスディスカバリを利用した負荷分散について。
8.3.1 Netflix Ribbon Support
Netflix Ribbon対応について。
8.4 Distributed Tracing
分散トレーシングについて。
8.4.1 Tracing with Zipkin
Zipkin対応について。
8.4.2 Tracing with Jaeger
Jaeger対応について。
9 Serverless Functions
9章は、サーバーレス構成への対応について。
9.1 Writing Functions
サーバーレスの実装方法について。
9.1.1 FunctionApplication
サーバーレスアプリケーションを定義するFunctionApplication
クラスについて。
9.1.2 FunctionBean
関数の動作を記述する@FunctionBean
アノテーションについて。
9.1.3 Groovy Functions
Groovyスクリプトとしての記述方法について。
9.2 Running Functions
実装した関数の実行方法について。
9.2.1 Functions as Web Applications
Webアプリケーションとして実行する方法。
9.2.2 Functions as CLI Applications
CLIアプリケーションとして実行する方法。
9.3 Deploying Functions
サーバーレス構成のデプロイについて。
9.3.1 Deploying Functions to AWS Lambda
AWS Lambda環境へのデプロイについて。
9.3.2 Deploying Functions to OpenFaaS
OpenFaaS環境へのデプロイについて。
9.4 Calling Functions with FunctionClient
アプリケーションから直接呼び出すFunctionClient形式のサポートについて。
10 Message-Driven Microservices
10章は、メッセージ駆動型のマイクロサービス構成について。
10.1 Kafka Support
Apache Kafka対応について。
10.2 RabbitMQ Support
RabbitMQ対応について。
11 Standalone Command Line Applications
11章は、CLIアプリケーションとして動作させる方法について。
11.1 Picocli Support
Picocli対応について。
12 Configurations
12章は、よく使用されるコンポーネントとの連携モジュールについて。
12.1 Configurations for Data Access
データベースアクセスのためのモジュール紹介。
12.1.1 Configuring a SQL Data Source
SQLデータソースの構成について。
12.1.2 Configuring Hibernate
Hibernate / JPA の構成について。
12.1.3 Configuring MongoDB
MongoDBの構成について。
12.1.4 Configuring Neo4j
Neo4j Bolt Driverの構成について。
12.1.5 Configuring Postgres
Postgresの構成について。
12.1.6 Configuring Redis
Redisの構成について。
12.1.7 Configuring Cassandra
Cassandraの構成について。
12.1.8 Configuring Liquibase
Liquibaseの構成について。
12.1.9 Configuring Flyway
Flywayの構成について。
13 Language Support
13章は、各JVM言語のサポートについて。
13.1 Micronaut for Java
Java言語について。
13.1.1 Using Micronaut with Java 9+
Java 9以降での注意点について。
13.1.2 Incremental Annotation Processing with Gradle
Gradleを利用したインクリメンタル処理について。
13.1.3 Using Project Lombok
Project Lombokを使用する際の注意点について。
13.1.4 Configuring an IDE
IDEを使用する際の設定方法について。
13.1.5 Retaining Parameter Names
メソッドパラメータ名が保持されないことで発生する問題へのトラブルシューティングについて。
13.2 Micronaut for Groovy
Groovy言語について。
13.3 Micronaut for Kotlin
Kotlin言語について。
13.3.1 Kotlin, Kapt and IntelliJ
KotlinとIntelliJの組み合わせについて。
13.3.2 Incremental Annotation Processing with Gradle and Kapt
GradleとKaptを使用した際のインクリメンタル処理について。
13.3.3 Kotlin and AOP Advice
KotlinでAOPを実現する際の注意点について。
13.3.4 Kotlin and Retaining Parameter Names
メソッドパラメータ名が保持されないことで発生する問題へのトラブルシューティングについて。
13.3.5 Coroutines Support
コルーチンのサポートについて。
13.4 Micronaut for GraalVM
GraalVMについて。
13.4.1 Microservices as GraalVM native images
GraalVMネイティブイメージへの対応について。
13.4.2 GraalVM and Micronaut FAQ
GraalVMを使用する際のFAQ。
14 Management & Monitoring
14章は、管理エンドポイントの構成について。
14.1 Creating Endpoints
管理エンドポイントの作成について。
14.1.1 The Endpoint Annotation
エンドポイントを作成する@Endpoint
アノテーションについて。
14.1.2 Endpoint Methods
エンドポイントで実装するメソッドについて。
14.1.3 Endpoint Configuration
エンドポイント構成の設定について。
14.2 Built-In Endpoints
組み込みエンドポイントの紹介。
14.2.1 The Beans Endpoint
Bean定義に関する情報を返す、Beansエンドポイントについて。
14.2.2 The Info Endpoint
静的情報を返すInfoエンドポイントとカスタマイズ方法にについて。
14.2.3 The Health Endpoint
動作状態を返す、Healthエンドポイントについて。
14.2.4 The Metrics Endpoint
Micrometerと連携する、Metricsエンドポイントについて。
14.2.5 The Refresh Endpoint
アプリケーションの状態を更新し再インスタンス化しなおす、Refreshエンドポイントについて。
14.2.6 The Routes Endpoint
URI情報を返す、Routesエンドポイントについて。
14.2.7 The Loggers Endpoint
ロガーの情報とログレベルを設定する、Loggersエンドポイントについて。
14.2.8 The Caches Endpoint
アプリケーション内のキャッシュを制御する、Cachesエンドポイントについて。
14.2.9 The Server Stop Endpoint
サーバーを停止する、Stopエンドポイントについて。
デフォルトでは無効。
14.2.10 The Environment Endpoint
環境情報を取得する、Environmentエンドポイントについて。
15 Security
15章は、セキュリティ機能の紹介。
16 Multi-Tenancy
16章は、マルチテナンシーについて。
16.1 Multi-Tenancy GORM
GORMとの連携について。
17 Micronaut CLI
17章は、micronautでの開発で使用するmn
コマンドの説明について。
17.1 Creating a Project
プロジェクトの作成について。
17.2 Profiles
テンプレート等を含む、プロファイル機能について。
17.2.1 Comparing Versions
バージョンの比較方法について。
17.3 Features
追加の依存関係を構成する、フィーチャーについて。
17.4 Commands
プロファイルに含まれる、実行可能なコマンドについて。
17.5 Reloading
15章は、開発時の再起動(ホットリロード等)について。
17.5.1 Automatic Restart
再起動の方法について。
17.5.2 JRebel
JRebelとの連携について。
17.5.3 Spring-Loaded
Spring-Loadedとの連携について。
17.5.4 Reloading with Gradle
Gradleを利用している場合の再起動について。
17.5.5 Reloading with an IDE
IDEを利用している場合の再起動について。
17.6 Proxy Configuration
HTTPプロキシ環境下での操作方法について。
18 Appendices
18章は付録。
18.1 Frequently Asked Questions (FAQ)
micronautに関するFAQ。
18.2 Using Snapshots
micronautの配布方法について。
18.3 Common Problems
micronautを使用する際に発生する一般的な問題について(トラブルシューティング)。
18.4 Breaking Changes
これまで/これからの重大な変更について。