๐ก Ktor์์ HoconApplicationConfig๋ก YAML ์ค์ ์ด ์๋ ๋ ํด๊ฒฐ๋ฒ (.conf ๋์ ) (์ฝ์ง๊ธฐ๋ก)
๐ก Ktor์์ HoconApplicationConfig๋ก YAML ์ค์ ์ด ์๋ ๋ ํด๊ฒฐ๋ฒ (.conf ๋์ )
๐งฉ ๋ฐ์ ์ํฉ
Ktor ํ๋ก์ ํธ์์ ์ค์ ์ ๋ณด๋ฅผ application.yaml
์ ์์ฑํ๊ณ ์๋์ฒ๋ผ ๋ถ๋ฌ์ค๋ ค ํ์ต๋๋ค.
val config = HoconApplicationConfig(ConfigFactory.load("application.yaml"))
ํ์ง๋ง ํ ์คํธ ํ๊ฒฝ์ด๋ ์ปค์คํ ๋ฐํ์ ํ๊ฒฝ์์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค:
Unresolved substitution
Unresolved reference
Missing configuration for 'jwt.issuer'
๐ ์์ธ ๋ถ์
ConfigFactory.load("application.yaml")
- โ
application.yaml
์ ๊ธฐ๋ณธ ์ง์ํ์ง ์์ - โ
ConfigFactory
๋.conf
,.json
,.properties
,.env
๋ฑ๋ง ์ง์ ํ์ฑ ๊ฐ๋ฅ .yaml
์ Typesafe Config ๋ผ์ด๋ธ๋ฌ๋ฆฌ(HOCON)์์ ์ง์ ํ์ฑํ์ง ์์- ๋ณ๋์ YAML ํ์๋ฅผ ๋ถ์ด์ง ์๋ ์ด์, YAML์ ์ฝํ์ง ์์
๐ง ํด๊ฒฐ ๋ฐฉ๋ฒ: .yaml โ .conf ์ ํ
๐ ๊ธฐ์กด .yaml
์ค์ ์์
# application.yaml
jwt:
secret: "secret-key"
issuer: "issuer-value"
โ
๋ณํ๋ .conf
์ค์
# application-test.conf
jwt {
secret = "secret-key"
issuer = "issuer-value"
}
๐ก ๋ณ๊ฒฝ ํ ์ฝ๋
val config = HoconApplicationConfig(ConfigFactory.load("application-test.conf"))
โ
.conf
๋ HOCON ํฌ๋งท์ผ๋ก, .yaml
๋ณด๋ค ๋ ์ ์ฐํ๊ณ include, reference ๋ฑ๋ ์ง์ํฉ๋๋ค.
๐งช ํ ์คํธ ํ๊ฒฝ์์์ ํ์ฉ ์์
class AuthServiceTest {
private val config = HoconApplicationConfig(ConfigFactory.load("application-test.conf"))
private val database = DatabaseFactory.init(config)
private val jwtConfig = JwtConfig.init(config) // custom config
private val authService = AuthService(repository, jwtConfig)
// ...ํ
์คํธ ์ฝ๋ ์์ฑ
}
โ ํ
- ํ
์คํธ์ฉ
.conf
ํ์ผ์ ๋ถ๋ฆฌํ์ฌ ํ๊ฒฝ์ ๋ง๋ ์ค์ ๋ง ๋ฐ๋ก ๊ด๋ฆฌํ ์ ์์ - ์ฌ๋ฌ ํ๊ฒฝ๋ณ ์ค์ ์
include
๋ก ๋๋ ๋ ๊ฐ๋ฅ
๐ง ์ ๋ฆฌ
ํญ๋ชฉ | ๋ด์ฉ |
---|---|
๋ฌธ์ | application.yaml ์ HoconApplicationConfig ๋ก ๋ก๋ํ๋ ค ํ์ง๋ง ์คํจ |
์์ธ | Typesafe Config๋ .yaml ํฌ๋งท์ ๊ธฐ๋ณธ ์ง์ํ์ง ์์ |
ํด๊ฒฐ์ฑ | .yaml โ .conf ๋ณํ ํ ConfigFactory.load() ๋ก ๋ถ๋ฌ์ค๊ธฐ |
์ฅ์ | .conf(HOCON) ์ ์ ์ฐํ๋ฉฐ, include ๋ฐ ๋ณ์ ์นํ ๊ธฐ๋ฅ๋ ์ ๊ณต |
โ ๊ฒฐ๋ก
- Spring๊ณผ ๋ค๋ฅด๊ฒ Ktor๋ ์ค์ ๋ก๋ฉ ์
.yaml
์ง์์ด ์ ํ์ ์ ๋๋ค. - Kotlin/Ktor ํ๊ฒฝ์์๋ ๊ฐ๋ฅํ๋ฉด
.conf
ํฌ๋งท์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์์ ์ ์ด๊ณ ์ ์ฐํฉ๋๋ค. .conf
๋ ๋ฌธ๋ฒ๋ ์ง๊ด์ ์ด๋ฉฐinclude
,fallback
,substitution
๋ฑ์ ์ง์ํด ํ๊ฒฝ ๊ตฌ์ฑ์ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค.
๐ Ktor ํ
์คํธ์์ ์ค์ ์ด ์ ๋๋ก ์ ์ฝํ๋ค๋ฉด, YAML์ด ์๋ .conf
ํ์ผ์ ์ฐ๋ ์ต๊ด์ ๋ค์ด์! ๐ช
๋๊ธ๋จ๊ธฐ๊ธฐ