๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Spring Boot ์˜ ๋“ฑ์žฅ๊ณผ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 2. 15.

Spring์˜ ๋“ฑ์žฅ
: ๋Œ€๊ทœ๋ชจ์˜ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ถ„์•ผ๊ฐ€ ๋ฐœ์ „ํ•˜๋ฉด์„œ ๋”์šฑ ๋ณต์žกํ•ด์กŒ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์€ํ–‰ ์‹œ์Šคํ…œ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ช‡ ์ฒœ๋งŒ์˜ ์‚ฌ๋žŒ์ด ํ•œ๊บผ๋ฒˆ์— ์ž”๊ณ  ์กฐํšŒ๋ฅผ ํ•˜๊ณ , ์ž…๊ธˆ์ด๋‚˜ ์ถœ๊ธˆ์„ ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํ†ต์žฅ์„ ๊ฐœ์„คํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋ ‡๋“ฏ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋งŽ์€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ, ๋ณด์•ˆ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ์‹ ๊ฒฝ์“ฐ๋ฉด์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊นŒ์ง€ ๊ฐœ๋ฐœํ•˜๊ธฐ๋Š” ๋งค์šฐ ์–ด๋ ต๋‹ค.
 
์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ Spring ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค. Spring ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋งค์šฐ ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ์„œ๋ฒ„ ์„ฑ๋Šฅ, ์•ˆ์ •์„ฑ, ๋ณด์•ˆ ๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ์ด๋กœ์จ ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
 
Spring Boot์˜ ๋“ฑ์žฅ
: ์Šคํ”„๋ง์€ ์žฅ์ ์ด ๋งŽ์€ ๊ฐœ๋ฐœ ๋„๊ตฌ์ด์ง€๋งŒ ์„ค์ •์ด ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ณ ์ž Spring Boot๊ฐ€ ์ถœ์‹œ๋˜์—ˆ๋‹ค. Spring Boot๋Š” Spring ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.
 
 
 
Spring์€
IoC(Inversion of Control) / DI(Dependency Injection) 
PSA(Portable Service Abstraction)
AOP(Aspect Oriented Programming)
์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

์ถœ์ฒ˜ : ์Šคํ”„๋ง๋ถ€ํŠธ3 ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋˜๊ธฐ (์‹ ์„ ์˜ ์ง€์Œ)

 

<<Spring Boot ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ>>

1. ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ ˆ์ด๋“ค ํ”„๋กœ์ ํŠธ ์ˆ˜์ •ํ•˜๊ธฐ
 

 
Spring boot ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ด์ „ Gradle ํ”„๋กœ์ ํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ ๋นจ๊ฐ„ ๋ฐ•์Šค๋ฅผ ์นœ build.gradle์— ๋“ค์–ด๊ฐ€์„œ Spring Boot ํ”„๋กœ์ ํŠธ๋กœ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
 
id์™€ dependecy๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  Spring Boot ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ , JPA ์—ญ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์˜์กด์„ฑ์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
 
๊ทธ ๋‹ค์Œ, ๋‚˜์˜ DB์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ resources ํด๋” ์•„๋ž˜ application.properties๋ฅผ ์ถ”๊ฐ€ํ•œ ๋’ค์— 

 
์ด๋ ‡๊ฒŒ MySQL์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•ด์ค€๋‹ค.
 

 
์„ค์ •์„ ๋งž์ณค๋‹ค๋ฉด, java ํด๋” ๋‚˜์˜ ๋„๋ฉ”์ธ (me.jihooo) ์•„๋ž˜ springbootdeveloper ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ ๋‹ค. 
๋ชจ๋“   ํ”„๋กœ์ ํŠธ์—๋Š” ๋ฉ”์ธ ํด๋ž˜์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SpringBootDeveloperApplication์„ ๋ฉ”์ธ ํด๋ž˜์Šค๋กœ ์žก๊ณ  ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์ค€๋‹ค.
์ด๋Š” ํ–ฅํ›„ Spring Boot๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค!
 

๊ทธ ๋‹ค์Œ TestController๋ฅผ ํ†ตํ•ด Mapping์„ Get ์š”์ฒญ์„ ๋ฐ›์„ ์‹œ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ• ์ง€ Controller๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” /test๋กœ ๊ฐˆ๋•Œ Hello๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ํ–ˆ๋‹ค.
์ด๋•Œ @RestController๋Š” @Component๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋นˆ์œผ๋กœ ๋“ฑ๋ก์ด ๋˜๊ณ  Spring์ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒํ•œ๋‹ค. ๋˜ํ•œ ๋ผ์šฐํ„ฐ์˜ ์—ญํ• ๋กœ์„œ HTTP์™€ ์ด ์ž๋ฐ”์ฝ”๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
 
 

๊ทธ๋ ‡๊ฒŒ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด return ํ–ˆ๋˜ Hello๊ฐ€ ๋ณด์ธ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ธฐ๋ณธ Spring Boot setting์€ ๋๋‚ฌ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€