์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋์
์คํ๋ง ์ด๋์ ๋ผ์ด์ ๋ฅผ ํตํด์ ์คํ๋ง ๋ถํธ ๊ธฐ๋ฐ์ ํ๋ก์ ํธ ํด๋๋ฅผ ๊ตฌ์ฑํ๋๋ผ๋ ํ์ฌ๋ง๋ค ํน์ ๊ฐ๋ฐ์๋ง๋ค ๋๋ฌด๋๋ ๋น์ฐํ๊ฒ ํ๋ ๊ฒ๋ค์ด ์กฐ๊ธ์ฉ ์๊ธฐ ๋ง๋ จ์ด๋ค. ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋์ ๋๋ฌด๋๋ ๋น์ฐํ๊ฒ ์ต๊ณผ์ ์ผ๋ก ๋งค๋ฒ ํ๋ ๊ฒ๋ค์ ๋ํด์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
1. Properties๊ฐ ์๋ YAML ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ
์คํ๋ง ์ด๋์ ๋ผ์ด์ ๋ฅผ ํตํด์ ๋ง๋ค์ด์ง ๊ธฐ๋ณธ์ ์ธ ํ๋ก์ ํธ ํด๋์๋ application.properties ํ์ผ์ด ์กด์ฌํ๋ค. ์คํ๋ง ๋ถํธ์์๋ Java Properties, YAML ๊ทธ๋ฆฌ๊ณ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด์ ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํผํฐ ์์ฑ ๊ฐ์ ์ ์ฉํ์ฌ ํ์ฉํ ์ ์๊ฒ ์ง์ํ๋ค. ํ์ง๋ง, ISO-8859-1 ์ธ์ฝ๋ฉ์ผ๋ก ๊ฐ์ ๋๋ ์๋ฐ ํ๋กํผํฐ ํ์ผ์๋ ํ๊ณ๊ฐ ์๊ณ ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ UTF-8์ ์ฌ์ฉํ๋ ํธ์ด๋ฏ๋ก YAML ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ํธ๋ฆฌํ๋ค.
It is recommended to stick with one format for your entire application. If you have configuration files with both .properties and .yml format in the same location, .properties takes precedence.
์์ ๊ฐ์ด ๊ณต์ ๋ฌธ์์ ๋์์๋ ๊ฒ์ฒ๋ผ ํ๋กํผํฐ์ ์ผ๋ฏ ํ์ผ์ ๋์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋ฐ ํ๋กํผํฐ ํ์ผ์ ์ฐ์ ํ์ฌ ์ ์ฉํ๋ฏ๋ก ์ฃผ์ํ์.
2. ์คํ๋ง ๋ถํธ ๊ธฐ๋ณธ ๋ฐฐ๋ ์ต์ ๋๊ธฐ
๋๋ฒ์งธ๋ก ํ๋ ์ผ์ ์คํ๋ง ๋ถํธ์์ ์ ๊ณตํ์ฌ ์ฝ์์ ํ์๋๋ ๊ธฐ๋ณธ ๋ฐฐ๋ ๋ก๊ทธ๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ด๋ค. ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์คํ๋ง ๋ฐฐ๋๋ฅผ ํตํด์ ๋ฒ์ ์ ํ์ธํ ํ์์ฑ์ ๊ต์ฅํ ์ ์ผ๋ฉฐ ์ค์์ ํด์ผํ๋ ๊ฒ์ ๋น๋ ์ ๋ณด์ผ ๋ฟ์ด๊ธฐ์ ๋ถํ์ํ๋ค.
spring.main.banner-mode: off
3. ๊ทธ๋๋ค ๋กฌ๋ณต ํจํค์ง ๊ตฌ์ฑ์ ๋กฌ๋ณต ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ
๊ทธ๋๋ค ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ ๊ทธ๋๋ค ๋กฌ๋ณต ํ๋ฌ๊ทธ์ธ์ด ์๋ ์ง์ ํจํค์ง๋ฅผ ๋ํ๋์์ ์ง์ ํ๋ ๋ฐฉ์์ผ๋ก ๋์ด์๋ค. io.freefair.lombok์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ฑ๋กํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๋ค.
plugins {
id 'io.freefair.lombok' version '8.0.1'
}
4. ๊ธฐ๋ณธ ํฐ์บฃ ์ปจํ ์ด๋๋ฅผ ์ธ๋ํ ์ฐ๋ก ๋์ฒดํ๊ธฐ
์คํ๋ง ๋ถํธ ํ๋ก์ ํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์กดํ๋ ์๋ฒ ๋๋ ํฐ์บฃ๋ ์ค์ํ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ์ง๋ง ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ NIO ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๊ฒฝ๋์ ์น ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ธ ์ธ๋ํ ์ฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ์น ์คํํฐ ๋ชจ๋์๋ ํฐ์บฃ์ ๋ํ ์์กด์ฑ์ด ํฌํจ๋์ด์์ผ๋ฏ๋ก ์๋์ ๊ฐ์ด ํฐ์บฃ์ ๋ํ ๋ชจ๋์ ์ ์ธ๋๋๋ก ํ์.
configurations.configureEach {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-undertow'
}
์คํ๋ง ํ๋ ์์ํฌ 6.1 ์์๋ JDK 21๊ณผ Virtual Threads๋ฅผ ์ฐ์ ์ ์ผ๋ก ํฐ์บฃ์์ ์ง์ํ ์์ ์ธ ๊ฒ ๊ฐ์ ์ธ๋ํ ์ฐ๊ฐ ์๋ ํฐ์บฃ์ ์ ํํด์ผํ ๊ฒฝ์ฐ๊ฐ ๋ ๊ฐ๋ฅ์ฑ๋ ๋ณด์ธ๋ค. ๊ด๋ จ ํ๋ก์ ํธ: mp911de/spring-boot-virtual-threads-experiment
5. ์ธํ ๋ฆฌ์ ์ด IDEA์ ๋น๋ ๋ฐ ์คํ ์ต์ ๋ณ๊ฒฝํ๊ธฐ
๋ง์ง๋ง์ผ๋ก ์ธํ ๋ฆฌ์ ์ด IDEA๋ฅผ ํตํด์ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์คํํ๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ์ ๊ทธ๋๋ค์ ๋ํ ์ต์ ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ์คํํ๋ ํ๊ฒฝ์ด ๋๋ฏ๋ก ์ ์ฉํ๋ ํธ์ด๋ค.
- Build, Execution, Deployment > Build Tools > Gradle > Build and run using Intellij IDEA
- Build, Execution, Deployment > Build Tools > Compiler > Build project automatically
๊ธฐ๋ณธ Gradle์ด ์๋ Intellij IDEA๋ก ๋น๋ ๋ฐ ์คํ์ ํ๋๋ก ์ค์ ํ๋ค๋ฉด ํ๋ก์ ํธ ๋ฃจํธ ํด๋์ out ์ด๋ผ๋ ์ด๋ฆ์ ํด๋์ ํ์ฌ ์คํ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ํด๋์ค ํ์ผ๊ณผ ์ ์ ๋ฆฌ์์ค ํ์ผ๋ค์ด ์ด๋๋์ด ์ด๋ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๊ณง๋ฐ๋ก ์ดํด๋ณผ ์ ์๋ค.