Micronaut 5
r2d1-micronaut 是一个可选集成模块,根据 Micronaut-managed resource 有条件地创建 framework-neutral R2D1 bean。它不会把 Micronaut API 添加到 base r2d1 artifact。
Dependency 与 runtime
Micronaut 5 集成当前需要 Java 25。core 和 JDBC artifact 仍以 Java 21 编译。使用 JDBC index 时还要添加 r2d1-jdbc 和应用选择的 JDBC driver。
implementation("dev.nexcraft:r2d1-micronaut:<version>")启用 integration
除非 r2d1.enabled=true,否则 integration 禁用。它会 eager 创建 R2D1,因此不完整配置会在 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,不会关闭 executor。不要同时配置 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 目前不是已验证支持路径。
此模块不提供 Micronaut Data repository、HTTP endpoint、metrics、tracing、Spring compatibility、R2DBC、retry policy 或 database-server lifecycle。
