[๋ฐ๋ธ ์บ ํ] 1์ผ์ฐจ ๋๊ตฌ ์ต์ํด์ง๊ธฐ - Spring boot ์ดํด๋ณด๊ธฐ
๐ 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 ๋ฑ์ ๊ฒ์ํด์ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์ ์๋์ผ๋ก ๋ฑ๋กํ๋๋ก ์ง์ํ๋ค.