## `Spring Boot`๋ž€? ๊ฐ€๋Šฅํ•œ ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์„œ๋น„์Šคํ•˜๋Š” ๊ฑธ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” [[5. Spring๊ณผ ํŠน์ง• ๐ŸŒฟ|Spring]] ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ. ๊ธฐ์กด ์Šคํ”„๋ง์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์„ค์ •ํ•ด์•ผ ํ–ˆ๋˜ ์š”์†Œ๋“ค์ด ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉฐ, ํฌํ•จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ๊ฐœ๋ฐœ์— ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๊ณ  ํ…Œ์ŠคํŠธ๋„ ์™„๋ฃŒ๋˜์–ด ์žˆ์–ด ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ## [[5. Spring๊ณผ ํŠน์ง• ๐ŸŒฟ|Spring]]๊ณผ ๊ตฌ๋ถ„๋˜๋Š” Spring Boot ๋งŒ์˜ ํŠน์ง• ### ์„ค์ •๋ณด๋‹ค ๊ด€๋ก€ (Convention over Configuration) ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ธฐ์กด ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ค์ •์„ ํ•ด์•ผ ํ–ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด, >0. `javax.sql.DataSource` ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์ •ํ•œ๋‹ค.[^1] >1. property ํŒŒ์ผ์—์„œ jdbc url๊ณผ username, password, ๊ทธ๋ฆฌ๊ณ  connection pool ์„ค์ •๊ฐ’ ์„ค์ • >2. ํŠธ๋ž™์žญ์…˜์„ ์œ„ํ•œ `javax.sql.DataSourceTransactionManager` ๊ตฌํ˜„์ฒด๋ฅผ ์„ค์ • >3. `o.s.jdbc.core.JdbcTemplate` ์Šคํ”„๋ง ๋นˆ ์„ค์ • >4. ๊ฐ ๊ธฐ๋Šฅ์ด ์œ ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ ์œ„์™€ ๊ฐ™์€ ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์œ„์˜ ์ž‘์—…๋“ค์„ ๋ฏธ๋ฆฌ ๋Œ€์‹  ํ•ด์ฃผ๋ฉฐ, ๊ฐœ๋ฐœ์ž๋Š” ๊ด€๋ก€์— ๋”ฐ๋ผ ๊ฐ„๋‹จํ•œ ๋ช‡ ๊ฐ€์ง€๋งŒ ์„ค์ •ํ•˜๋ฉด ๋ฐ”๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ### ๋‹จ๋… ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” Tomcat WAS๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ŠคํŠธ์— WAS ์„ค์น˜ ์—†์ด JAR ํŒŒ์ผ ๋งŒ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. WAS ์„ค์น˜ ํ›„ ์„ค์ •๊นŒ์ง€ ํ•ด์•ผ ํ•˜๋Š” ์ „ํ†ต์ ์ธ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์–ด [[IT ์šฉ์–ด ์ •๋ฆฌ ๐Ÿ“•#`์Šค์ผ€์ผ์•„์›ƒ`|์Šค์ผ€์ผ์•„์›ƒ]] ๋ฐฉ์‹์œผ๋กœ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์‰ฝ๊ฒŒ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค. ### [[B. Spring Boot ์Šคํƒ€ํ„ฐ์™€ ์˜์กด์„ฑ ์ง€์˜ฅ|๊ฐ„ํŽธํ•œ ์„ค์ •์„ ์œ„ํ•œ '์Šคํƒ€ํ„ฐ' ์˜์กด์„ฑ ์ œ๊ณต]] ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ์„ ํฌํ•จํ•œ ์Šคํƒ€ํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด ์Šคํƒ€ํ„ฐ์™€ Gradle ๊ฐ™์€ ์˜์กด์„ฑ ๊ด€๋ฆฌ ํˆด์„ ํ†ตํ•ด ํ•ด๋‹น ๊ธฐ๋Šฅ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์Šคํƒ€ํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์–ด, ๋ชจ๋“  ํŒ€์ด ์‚ฌ์šฉํ•˜๋Š” ๊ณตํ†ต ๋ชจ๋“ˆ์„ ์Šคํƒ€ํ„ฐ๋กœ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.[^2] ### ์Šคํ”„๋ง ๊ธฐ๋Šฅ์„ ์ž๋™ ์„ค์ •ํ•˜๋Š” '์ž๋™ ๊ตฌ์„ฑ' ์ œ๊ณต ์Šคํ”„๋ง ๋ถ€ํŠธ์—๋Š” ๋ฏธ๋ฆฌ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๊ณ  ์กฐ๊ฑด ์ถฉ์กฑ์‹œ ์ž๋ฐ” ์„ค์ • ํด๋ž˜์Šค๋ฅผ ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ฑด์€ ํŠน์ • ์Šคํ”„๋ง ๋นˆ์ด ์žˆ๊ฑฐ๋‚˜, ํด๋ž˜์Šค ํŒจ์Šค์— ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ํŠน์ • ํ™˜๊ฒฝ ์„ค์ •๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. [^1]:Hikari, Apache Commons DBCP2, Tomcat DataSource ๋“ฑ [^2]:์ด๊ฒŒ ์ค‘์š”ํ•œ ํŠน์ง•์ธ ์ด์œ ๋Š” [[B. Spring Boot ์Šคํƒ€ํ„ฐ์™€ ์˜์กด์„ฑ ์ง€์˜ฅ|์—ฌ๊ธฐ]]์— ์ •๋ฆฌํ•ด๋‘์—ˆ๋‹ค.