Micronaut 5
r2d1-micronaut는 Micronaut-managed resource로 framework-neutral R2D1 bean을 조건부 생성하는 선택적인 통합 모듈입니다. base r2d1 artifact에 Micronaut API를 추가하지 않습니다.
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은 비활성화됩니다. 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-bearing configuration의 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은 이를 borrow하고 닫지 않습니다. 그렇지 않으면 integration이 만든 adapter resource를 소유하고 닫습니다.
r2d1.jdbc.executor가 애플리케이션 소유 Executor를 가리키면 Micronaut는 bounded admission만 감싸고 executor를 종료하지 않습니다. 외부 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을 제공하지 않습니다.
