打开文档导航
R2D1 / 文档

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/r2d1

Cloudflare 配置

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。