rootProject.name = "fastcampus-issue-service"
include("issue-service")
include("user-service")
⇒ JVM을 가동시킬 때 kotlin의 어노테이션을 포함시키기 위해 사용되는 플러그인
⇒ web config를 yaml 파일로 작성하고, 그걸 @ConfigurationProperties 로 처리하였는데, 이때 kapt가 필요
plugins {
...
kotlin("kapt") version "1.6.21"
}
...
subprojects {
...
apply(plugin = "kotlin-kapt")
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-r2dbc")
implementation("org.springframework.boot:spring-boot-starter-webflux")
// reactor, coroutine 확장
implementation("io.projectreactor.kotlin:reactor-kotlin-extensions")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
// 설정파일을 config class로 관리하기 위해 필요
kapt("org.springframework.boot:spring-boot-configuration-processor")
// password 암호화
implementation("at.favre.lib:bcrypt:0.9.0")
// R2DBC + h2 database
runtimeOnly("io.r2dbc:r2dbc-h2")
}
@Configuration
class R2DBCConfig {
// spring boot 가 올라가면서 bean이 초기화 되고,
// scripts/schema.sql를 읽어
// spring data r2dbc에서 초기화 작업이 진행된다.
@Bean
fun init(connectionFactory: ConnectionFactory) =
ConnectionFactoryInitializer().apply { // 설정값 주입
setConnectionFactory(connectionFactory)
setDatabasePopulator(
ResourceDatabasePopulator(
ClassPathResource("scripts/schema.sql")
)
)
}
}