Spring

Spring Boot

yjdat 2022. 10. 5. 10:22

๐Ÿ” ๋ชฉ์ฐจ

- SpringBoot ๋ž€?
ํŠน์ง•
Spring Framework ์™€ Spring Boot ์ฐจ์ด์ 


๐Ÿ”ถ Spring Boot ๋ž€?

์Šคํ”„๋ง ๋ถ€ํŠธ(spring boot)๋Š” ์Šคํ”„๋ง์„ ๋” ์‰ฝ๊ฒŒ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์Šคํ”„๋ง์„ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ, ์…‹ํŒ… ํ•ด์•ผ ๋  ์š”์†Œ๋“ค์ด ๋งŽ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ์„ธํƒํ•ด์•ผ ๋˜๋Š” ์ง„์ž… ์žฅ๋ฒฝ์ด ์กด์žฌํ•˜์—ฌ Spring ์„ ์ฒ˜์Œ ๋ฐฐ์šฐ๋ ค๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ๋Š” ์–ด๋ ค์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค. Spring boot ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ, spring ๊ฐœ๋ฐœ์„ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค.

๐Ÿ”ถ ํŠน์ง•

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ํ™•์žฅํŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์„ค์ •ํ•ด์•ผ ํ•  ๊ธฐ๋Šฅ๋“ค์ด ๋„ˆ๋ฌด ๋งŽ๊ณ  ์–ด๋ ค์› ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๋ฐ ์žˆ์–ด ๋งค์šฐ ์ค‘์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์กฐ๊ธˆ ๋” ์—๋„ˆ์ง€๋ฅผ ํˆฌ์ž…ํ•  ์ˆ˜ ์žˆ๊ฒŒ Spring์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ์ž๋™ํ™”ํ•˜์˜€๊ณ , ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ˜„์žฌ Spring Boot์„ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

- Tomcat, Jetty or Undertow ํฌํ•จ ( .WAR ํŒŒ์ผ๋“ค์„ ๋ฐฐํฌํ•  ํ•„์š” ์—†์Œ )

- ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ๋‹จ์ˆœํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ 'Starter' ์ข…์†์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

- ์–ธ์ œ๋“ ์ง€ ํ•„์š”ํ•  ๋•Œ ์Šคํ”„๋ง & ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.

 

 

๐Ÿ”ถ Spring Framework์™€ Spring Boot ์ฐจ์ด์ 

๐Ÿ“Ž Dependency (์˜์กด์„ฑ)

Spring Framework๋Š” dependency๋ฅผ ์„ค์ •ํ•ด์ค„ ๋•Œ ์„ค์ • ํŒŒ์ผ์ด ๋งค์šฐ ๊ธธ๊ณ , ๋ชจ๋“  dependency์— ๋Œ€ํ•ด ๋ฒ„์ „ ๊ด€๋ฆฌ๋„ ํ•˜๋‚˜ ํ•˜๋‚˜ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ( Spring์˜ ๋ช‡ ๋ฒ„์ „์ด ํ˜ธํ™˜์ด ๋˜๋Š”์ง€. ์–ด๋–ค ์˜์กด์„ฑ์ด ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด ๊ผญ ํ•„์š”ํ•˜์˜€๋‹ค. )

ํ•˜์ง€๋งŒ Spring Boot๋Š” starter์„ ํ†ตํ•ด์„œ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๊ณ  dependency ํ•˜๋‚˜๋กœ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

starter๋ž€ ํŠน์ • ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์˜์กด์„ฑ ๊ทธ๋ฃน์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. starter๋Š” ๋งˆ์น˜ npm์ฒ˜๋Ÿผ ๊ฐ„ํŽธํ•˜๊ฒŒ dependency๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š”๋ฐ, ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ JPA๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด prom.xml(Maven)์ด๋‚˜ build.gradle(Gradle)์— 'spring-boot-starter-data-jpa'๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด spring boot๊ฐ€ ๊ทธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์•Œ์•„์„œ ๋ฐ›์•„์˜จ๋‹ค.

๐Ÿ“Ž Deployment (๋ฐฐํฌ)

Spring Boot๋Š” ๋‹จ๋… ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ์œผ๋กœ๋„ ๋ฐฐํฌ๊ฐ€ ๋˜๋„๋ก ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. Spring Framework๋กœ ๊ฐœ๋ฐœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ, .warํŒŒ์ผ์„ Web Application Server์— ๋‹ด์•„ ๋ฐฐํฌํ–ˆ์ง€๋งŒ, Spring Boot๋Š” ๋‚ด์žฅ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .jar ํŒŒ์ผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Ž Configuration

Spring Framework์˜ ๊ฒฝ์šฐ configuration ์„ค์ •๋„ ๋งค์šฐ ๊ธธ๊ณ  ๋ชจ๋“  annotation & bean ๋“ฑ๋ก ๋“ฑ์„ ์„ค์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Spring Boot๋Š” application.properties ํŒŒ์ผ์— ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Spring Framework์™€ ๋‹ฌ๋ฆฌ Spring Boot์—๋Š” AutoConfiguration ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Spring Boot๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ํด๋ž˜์Šค์— @SpringBootApplication์ด๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒŒ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ผ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™์ผํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜ ๋•๋ถ„์— ๋งŽ์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ๋ฒ„ ๋“ฑ์ด ์‹คํ–‰ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


reference