Micronaut 5
r2d1-micronaut は Micronaut-managed resource から framework-neutral R2D1 bean を条件付きで作成する optional integration module です。base r2d1 artifact に Micronaut API は追加しません。
Dependency と runtime
Micronaut 5 integration は現在 Java 25 が必要です。core と JDBC artifact は Java 21 向けのままです。JDBC index には r2d1-jdbc とアプリケーションが選ぶ JDBC driver も追加します。
implementation("dev.nexcraft:r2d1-micronaut:<version>")Integration を有効にする
r2d1.enabled=true でなければ integration は無効です。R2D1 を eager に作るため、不完全な設定は startup 中に失敗します。index type は jdbc または d1 です。
r2d1:
enabled: true
index:
type: jdbc
jdbc:
datasource: default
execution-mode: platform-thread
max-concurrency: 4
max-pending: 64
datasources:
default:
url: jdbc:h2:file:./data/r2d1Cloudflare 設定
r2 と d1 の設定は framework-neutral adapter と同じ境界を使います。secret を含む configuration object は toString() で値を隠します。
r2d1:
enabled: true
index:
type: d1
r2:
endpoint: https://<account-id>.r2.cloudflarestorage.com
access-key-id: ${R2_ACCESS_KEY_ID}
secret-access-key: ${R2_SECRET_ACCESS_KEY}
bucket-name: documents
region: auto
d1:
account-id: ${CLOUDFLARE_ACCOUNT_ID}
database-id: ${CLOUDFLARE_D1_DATABASE_ID}
api-token: ${CLOUDFLARE_D1_API_TOKEN}Resource ownership
アプリケーションが unique または @Primary の S3AsyncClient、Java HttpClient を提供すれば integration は借用し、閉じません。なければ integration が作った adapter resource を所有して閉じます。
r2d1.jdbc.executor がアプリケーション所有の Executor を指す場合、Micronaut は bounded admission で包むだけで終了しません。external executor と execution-mode を同時に設定しないでください。
integration は DataSource、connection pool、database server を開始・終了しません。
Override と native image
アプリケーション bean は R2D1、CollectionFactory、DocumentStore、IndexStore、DocumentCodec、initializer の順で integration が作る bean より優先されます。
検証済みの native smoke path は H2 JDBC backend の Micronaut ApplicationContext です。native image の document type には @ReflectiveAccess などの明示的な reflection registration が必要になる場合があります。R2 と D1 の native runtime は現在検証済みのサポート経路ではありません。
この module は Micronaut Data repository、HTTP endpoint、metrics、tracing、Spring compatibility、R2DBC、retry policy、database-server lifecycle を提供しません。
