๐Ÿ’ป FrameWork(ํ”„๋ ˆ์ž„์›Œํฌ)

FrameWork ๊ด€๋ จ Information
์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋นˆ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์„ค์ •์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ์กฐ๊ฑด๋ถ€ ์„ค์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด, ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋™์ž‘์„ ์œ ์—ฐํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” @Conditional ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ @ConditionalOnXxx ์–ด๋…ธํ…Œ์ด์…˜๋“ค์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. @Conditional ์–ด๋…ธํ…Œ์ด์…˜@Conditional ์–ด๋…ธํ…Œ์ด์…˜์€ ํŠน์ • ์กฐ๊ฑด์ด ๋งŒ์กฑ๋  ๋•Œ๋งŒ ๋นˆ์„ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ์„ค์ •์„ ์ ์šฉํ•˜๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์ด ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์กฐ๊ฑด์„ ์ •์˜ํ•˜๋Š” Condition ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŠน์ • ํ”„๋กœํŒŒ์ผ์— ๋”ฐ๋ผ ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:import org.springf..
์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ฐœ๋ฐœ์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ž๋™ ๊ตฌ์„ฑ(Auto Configuration)์ด๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ๋นˆ๋“ค์„ ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•ด์ฃผ์–ด, ๋ฐ˜๋ณต์ ์ด๊ณ  ๋ณต์žกํ•œ ์„ค์ •์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ž๋™ ๊ตฌ์„ฑ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž๋™ ๊ตฌ์„ฑ ์•Œ์•„๋ณด๊ธฐ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” spring-boot-autoconfigure ํ”„๋กœ์ ํŠธ ์•ˆ์—์„œ ์ˆ˜๋งŽ์€ ์ž๋™ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, JdbcTemplate์„ ์„ค์ •ํ•˜๊ณ  ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ฃผ๋Š” ์ž๋™ ๊ตฌ์„ฑ์„ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. JdbcTemplateAutoConfigurationpackage org.springframework.boot.autoconfigure.jdbc;import j..
์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ์›น MVC, ๋‚ด์žฅ ํ†ฐ์บฃ, JSON ์ฒ˜๋ฆฌ, ๋กœ๊ทธ ๊ด€๋ฆฌ, ์„ค์ • ํŒŒ์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ๊ทธ์ € ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์„ ๋ฟ์ธ๋ฐ, ๊ฐ๊ฐ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ผ์ผ์ด ์ถ”๊ฐ€ํ•˜๊ณ  ์„ค์ •ํ•˜๋Š” ์ผ์€ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ๋ž€?์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ชจ์•„๋‘” ์˜์กด์„ฑ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ณต์žกํ•œ ์„ค์ • ์—†์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ ๋•๋ถ„์— ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ: spring-boot-starter-web •  build.gradle - dependencies ์ถ”๊ฐ€dependencies ..
- ์ด๋ฒˆ 4-2์—์„œ๋Š” ์‹ค์ œ DATA๋กœ TEST๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.- ํ™˜๊ฒฝ์„ค์ • ๊ด€๋ จ ๊ธ€์€ ์•„๋ž˜์— ์žˆ๋Š” ๊ธ€์„ ์ฐธ์กฐํ•˜์—ฌ ์ง„ํ–‰ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.[๐Ÿ’ป FrameWork(ํ”„๋ ˆ์ž„์›Œํฌ)/SpringTEST(์Šคํ”„๋งํ…Œ์ŠคํŠธ)] - 4-1 [ํ†ตํ•ฉTEST] testcontainers ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ • ๋ฐ ๊ฐ„๋‹จํ•œ DB TEST 1. StudentScoreServiceIntegrationTestpublic class StudentScoreServiceIntegrationTest extends IntegrationTest { @Autowired private StudentScoreService studentScoreService; @Autowired private EntityManager entityManage..
- ์ด๋ฒˆ 4์žฅ์—์„œ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ๋™์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹œ์ž‘ : ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ : testcontainers๊ฐ€ Docker๋ฅผ ์ด์šฉํ•ด ํ…Œ์ŠคํŠธ ํ•„์š”ํ•œ ์ปจํ…Œ์ด๋„ˆ๋“ค(MySQL, Redis ๋“ฑ..)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.๋™์  ํ”„๋กœํผํ‹ฐ ์ฃผ์ž… : ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ์˜ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํ”„๋ง ํ”„๋กœํผํ‹ฐ ๋™์ ์œผ๋กœ ์ฃผ์ž…(overwrite)ํ•ฉ๋‹ˆ๋‹ค.ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ : ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ: ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ์™€ ๋™์‹œ์— ์ƒ์„ฑํ–ˆ๋˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.1.  testcontainers ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ • ๋ฐ ๊ฐ„๋‹จํ•œ DB TEST1) build.gradle ... testImplementation "org.testcontainers:t..
D_JAKE
'๐Ÿ’ป FrameWork(ํ”„๋ ˆ์ž„์›Œํฌ)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก
์ƒ๋‹จ์œผ๋กœ