์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[๋ฐ๋ธŒ ์บ ํ”„] 1์ผ์ฐจ ๋„๊ตฌ ์ต์ˆ™ํ•ด์ง€๊ธฐ - Spring boot ์‚ดํŽด๋ณด๊ธฐ

์ฟ ๋งˆ๋ƒฅ 2024. 3. 23. 00:47

๐Ÿ“Œ Spring Boot๋Š” ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋‚˜์š”? 

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

 

Spring Boot ์‚ฌ์šฉ์˜ ์žฅ์ :
- ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
- ๊ธฐ๋ณธ ์„ค์ •์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ฐ์†Œํ•œ๋‹ค.
- ํ†ฐ์บฃ, ์ œํ‹ฐ ๊ฐ™์€ ๋‚ด์žฅ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด WAR ํŒŒ์ผ์ด ํ•„์š” ์—†๊ฒŒ ํ•œ๋‹ค.
- ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค. 
- ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž๋™ ๊ตฌ์„ฑํ•˜์—ฌ ์‰ฌ์šด ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
- YAML ํŒŒ์ผ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋“ฑ ์„ค์ • ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๐Ÿ“Œ Spring Boot Starter๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? starter ์˜ˆ์‹œ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. 

Spring Boot Starter๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ xml ํŒŒ์ผ์ด๋‚˜ build.gradle ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ธํŠธ์ด๋‹ค. ๊ฐ Starter๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์œผ๋ฉฐ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•œ๋‹ค.

  • spring-boot-starter-web: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํŠนํžˆ Spring MVC๋ฅผ ์‚ฌ์šฉํ•œ RESTful ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๊ธฐ๋ณธ ๋‚ด์žฅ ์ปจํ…Œ์ด๋„ˆ๋Š” ํ†ฐ์บฃ.
  • spring-boot-starter-data-jpa: Java Persistence API(JPA)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ…Œ์ด๋ธ”๊ณผ ์ง์ ‘ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋Œ€์‹  ๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘(ORM)์„ ํ†ตํ•ด ์ž๋ฐ” ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๊ฐ„ ๋งคํ•‘์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์ฆ‰, ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ ,๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋กœ์ง์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ค€๋‹ค. Hibernate๋ฅผ ๊ธฐ๋ณธ JPA ๊ตฌํ˜„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • spring-boot-starter-security : ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ, ์•”ํ˜ธํ™” ์ž‘์—… ๋“ฑ ํฌ๊ด„์ ์ธ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • spring-boot-starter-test : Unit, AssertJ, Mockito, Spring Test, Spring Boot Test ๋“ฑ ํ…Œ์ŠคํŠธ์— ํ•„์ˆ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • spring-boot-starter-actuator: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ์™€ ์„ฑ๋Šฅ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

 

๐Ÿ“Œ@SpringBootApplication ์–ด๋…ธํ…Œ์ด์…˜์€ ๋ฌด์—‡์ผ๊นŒ?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ตฌ์„ฑ์„ ํ•œ ๊ณณ์— ๋ชจ์•„ ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ค€๋‹ค. ๋‹ค์Œ์˜ ์„ธ ์–ด๋…ธํ…Œ์ด์…˜์ด ํ•ฉ์ณ์ง„ ๋ฉ”ํƒ€ ์–ด๋…ธํ…Œ์ด์…˜.

 

  • @Configuraiton: ์ด ์–ด๋…ธํ…Œ์ด์…˜์ด ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค ๋‚ด์—์„œ @Bean ์–ด๋…ธํ…Œ์ด์…˜์ด ๋‹ฌ๋ฆฐ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์Šคํ”„๋ง ๋นˆ์„ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  • @EnableAutoConfiguration: Spring Boot์˜ ์ž๋™ ๊ตฌ์„ฑ(auto-configuration) ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ, ํ•„์š”ํ•œ ๋นˆ ์„ค์ •์„ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
  • @ComponentScan: Spring์—๊ฒŒ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ, @Configuration์ด๋‚˜ @Service, @Controller ๋“ฑ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ์— ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•˜๋„๋ก ์ง€์‹œํ•œ๋‹ค.