콘텐츠로 이동
Bluetape4k 문서1.11

자동 설정과 구성 경계

최신 안정판 Bluetape4k 1.11.0 릴리스 기준

이 모듈의 AutoConfiguration.imports에는 ReactiveMongoAutoConfiguration 하나만 등록됩니다. 이 구성은 classpath에 ReactiveMongoOperations가 있고 같은 타입의 bean이 없을 때 ReactiveMongoTemplate을 만듭니다.

@AutoConfiguration
@ConditionalOnClass(ReactiveMongoOperations::class)
class ReactiveMongoAutoConfiguration {
@Bean
@ConditionalOnMissingBean(ReactiveMongoOperations::class)
fun reactiveMongoTemplate(
databaseFactory: ReactiveMongoDatabaseFactory,
mongoConverter: MongoConverter,
): ReactiveMongoTemplate =
ReactiveMongoTemplate(databaseFactory, mongoConverter)
}

ReactiveMongoDatabaseFactoryMongoConverter를 새로 만드는 구성은 아닙니다. 두 bean이 없다면 이 fallback도 완성될 수 없습니다.

일반적인 Spring Boot 애플리케이션

섹션 제목: “일반적인 Spring Boot 애플리케이션”

Spring Boot MongoDB reactive auto-configuration이 정상적으로 적용되면 이미 ReactiveMongoOperations가 있습니다. 그러면 @ConditionalOnMissingBean 때문에 bluetape4k fallback은 물러납니다. 애플리케이션이 자체 ReactiveMongoTemplate을 등록해도 같은 원칙이 적용됩니다.

따라서 이 artifact를 추가했다고 client나 pool이 하나 더 생기지는 않습니다. 실제 bean graph는 condition evaluation report로 확인합니다.

계층소유하는 것
bluetape4k 모듈ReactiveMongoOperations coroutine 확장, query DSL, template fallback
Spring Boot·Spring Dataproperty binding, factory, mapping converter, template, lifecycle integration
애플리케이션custom conversions, auditing, index 정책, transaction 경계, domain repository
MongoDB driverconnection pool, server selection, protocol, session, read/write concern, timeout

모듈 build에 MongoDB Kotlin driver가 포함돼 있어도 bluetape4k 자동 설정이 driver 설정을 대신 소유하는 것은 아닙니다.

1.11.0 소스에는 MongoCustomConversions bean이나 @EnableMongoAuditing이 없습니다. 필요한 애플리케이션은 별도 configuration을 둡니다.

@Configuration(proxyBeanMethods = false)
@EnableMongoAuditing
class MongoDomainConfiguration {
@Bean
fun mongoCustomConversions(): MongoCustomConversions =
MongoCustomConversions.create { adapter ->
adapter.registerConverter(MoneyWriteConverter())
}
}

converter는 저장 wire format을 바꿉니다. rolling deployment에서 구·신 애플리케이션이 같은 document를 읽을 수 있는지 검증한 뒤 적용합니다.

Coroutine 조회와 cardinality에서 template을 실제 조회에 사용합니다.