Spring Boot
์คํ๋ง ๋ถํธ๋ ํ์ํ ํ๊ฒฝ ์ค์ ์ ์ต์ํํ๊ณ ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๋๋ก ๋์์ค ์์ฐ์์ ํฅ์์์ผฐ๋ค.
ํน์ง
์๋ฒ ๋๋ ํฐ์บฃ, ์ ํฐ, ์ธ๋ํ ์ฐ๋ฅผ ์ฌ์ฉํด ๋ ๋ฆฝ ์คํ์ด ๊ฐ๋ฅํ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ
ํตํฉ ์คํํฐ๋ฅผ ์ ๊ณตํ์ฌ maven/gradle ๊ตฌ์ฑ ๊ฐ์ํ
์คํํฐ๋ฅผ ํตํ ์๋ํ๋ ์คํ๋ง ์ค์ ์ ๊ณต
๋ฒ๊ฑฐ๋ก์ด XML ์ค์ ์๊ตฌํ์ง ์์
JAR์ ์ฌ์ฉํด ์๋ฐ ์ต์ ๋ง์ผ๋ก๋ ๋ฐฐํฌ ๊ฐ๋ฅ
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ํฐ๋ง๊ณผ ๊ด๋ฆฌ๋ฅผ ์ํ Spring Actuator ์ ๊ณต
Spring Boot Reference Guide๋ฅผ ์ฐธ๊ณ ํด ์คํํฐ ๋ด๋ถ์ ์์กด์ฑ์ ํ์ธํ ์ ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ
spring-boot-starter-web
spring-boot-starter-tomcat: ํฐ์บฃ(์น์๋ฒ)
spring-webmvc: ์คํ๋ง ์น MVC
spring-boot-starter-thymeleaf: ํ์๋ฆฌํ ํ ํ๋ฆฟ ์์ง(View)
spring-boot-starter: ์คํ๋ง ๋ถํธ + ์คํ๋ง ์ฝ์ด + ๋ก๊น
spring-boot
spring-core
spring-boot-starter-logging
logback, slf4j
spring-boot-starter-test: ์คํ๋ง๋ถํธ ํ ์คํธ
์ฅ๋จ์
์ฅ์
๊ฐ๊ฐ์ ์์กด์ฑ ๋ฒ์ ์ ์ฌ๋ฆฌ๋ ๊ฒ์ด ์กฐ๊ธ ๋ ์์ํ๋ค.
ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ๊ทธ๊ฐ ์๋๋ผ๋ ์คํ๋งํ์ ๋ฒ๊ทธ ํฝ์คํ ๋ฒ์ ์ ๋ฐ๊ธฐ ํธ๋ฆฌํ๋ค.
๊ฐ๋จํ ์ด๋ ธํ ์ด์ ์ค์ ์ด๋ ํ๋กํผํฐ ์ค์ ์ผ๋ก ์ธ๋ถ์ ์ธ ์ค์ ์์ด ์ํ๋ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ ์ฉํ ์ ์๋ค.
๋ณ๋์ ์ธ์ฅ ํฐ์บฃ์ ์ค์นํ ํ์๊ฐ ์๋ค.
๋จ์
์ค์ ์ ๊ฐ์ธํํ๋ฉด ๋ฒ์ ์ ์ฌ๋ฆด ๋ ๊ธฐ์กด ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ถํธํจ์ ๊ฒช์ ์ ์๋ค.
ํน์ ์ค์ ์ ๊ฐ์ธํ ํน์ ์ค์ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด, ๋ด๋ถ์ ์ค์ ์ฝ๋๋ฅผ ์ดํด๋ด์ผํ๋ ๋ถํธํจ์ด ์๋ค.
์๋ ํ๊ฒฝ ์ค์
์คํ๋ง ๋ถํธ ์๋ ํ๊ฒฝ์ค์ ์ Web, H2, JDBC๋ฅผ ๋น๋กฏํด ์ฝ 100์ฌ ๊ฐ์ ์๋ ์ค์ ์ ์ ๊ณตํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก ์ถ๊ฐ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์คํ๋ง ๋ถํธ ์๋-์ค์ ์์กด์ฑ์ ๋ฐ๋ผ ์ค์ ์ด ์๋ ์ ์ฉ๋๋ค. ์๋ ์ค์ ์ @EnableAutoConfiguration
(@Configuration
๊ณผ ๋ฐ๋์ ๊ฐ์ด ์ฌ์ฉ) ๋๋ @SpringBootApplication
์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์คํ๋ง ํ๋ ์์ํฌ์์๋ ์์กด์ฑ์ ์ผ์ผ์ด ๋น์ผ๋ก ์ค์ ํ์ผ๋, ์คํ๋ง ๋ถํธ๋ ๊ด๋ จ ์์กด์ฑ์ ์คํํฐ๋ผ๋ ๋ฌถ์์ผ๋ก ์ ๊ณตํด ์๋ ์ค์ ์ ์ง์ํ๋ค.
@SpringBootApplication
@SpringBootConfiguration
: ์คํ๋ง ๋ถํธ์ ์ค์ ์ ๋ํ๋ด๋ ์ด๋ ธํ ์ด์ Spring์
@Configuration
๋์ฒด์คํ๋ง๋ถํธ ์ ์ฉ
@EnableAutoConfiguration
: ์๋ ์ค์ ์ ํต์ฌ ์ด๋ ธํ ์ด์ ํด๋์ค ๊ฒฝ๋ก์ ์ง์ ๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ ์ค์
ํน๋ณํ ์ค์ ๊ฐ์ ์ถ๊ฐํ์ง ์์ผ๋ฉด default๊ฐ ์ค์
@ComponentScan
: ํน์ ํจํค์ง ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก@configuration
์์ ์ฌ์ฉํ@Component
์ค์ ํด๋์ค๋ฅผ ์ฐพ๋๋ค.basePackages ํ๋กํผํฐ ๊ฐ์ ๋ณ๋๋ก ๊ฐ์ ์ค์ ํ์ง ์์ผ๋ฉด,
@ComponentScan
์ด ์์นํ ํจํค์ง๊ฐ ๋ฃจํธ ๊ฒฝ๋ก๋ก ์ค์
@EnableAutoConfiguration
์ฌ๊ธฐ์ ์๋ ์ค์ ์ ์ง์ํด์ฃผ๋ ์ด๋
ธํ
์ด์
์ @Import({AutoConfigurationImportSelector.class})
์ด๋ค.
AutoConfigurationImportSelector
๋ด๋ถ์ selectImports()
์๋ ์๋ ์ค์ ๋ฐฉ์์ ๋ํด ์กฐ๊ธ ๋ ์์ธํ ์ดํด๋ณผ ์ ์๋ค.
getAutoConfigurationEntry()
๋ฉ์๋๋ฅผ ๋ณด๋ฉด removeDuplicates()
์ข
๋ณต๋ ์ค์ ๊ณผ getExclusions()
์ผ๋ก ์ ์ธํ ์ค์ ์ ์ ์ธ์์ผ์ฃผ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ์ด์ค์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ๋น๋ง ์ํฌํธํ ์๋ ๋์์ผ๋ก ์ ํํ๊ณ ์๋ค.
META-INF/spring.factories
: ์๋ ์ค์ ํ๊น ํด๋์ค ๋ชฉ๋ก. ์ด๊ณณ์ ์ ์ธ๋์ด ์๋ ํด๋์ค๋ค์ด@EnableAutoConfiguration
์ ํ๊ฒMETA-INF/spring-configuration-metadata.json
: ์๋ ์ค์ ์ ์ฌ์ฉํ ํ๋กํผํฐ ์ ์ ํ์ผ.๋ฏธ๋ฆฌ ๊ตฌํ๋์ด ์๋ ์๋ ์ค์ ์ ํ๋กํผํฐ๋ง ์ฃผ์ ์ํค๋ฉด ๋๋ค.(๋ณ๋ ํ๊ฒฝ์ค์ ๋ถํ์)
org/springframework/boot/autoconfigure
: ๋ฏธ๋ฆฌ ๊ตฌํํด๋์ ์๋ ์ค์ ๋ฆฌ์คํธ{ํน์ ์ค์ ์ด๋ฆ}AutoConfiguration
ํ์์ผ๋ก ์ด๋ฆ์ด ์ง์ ๋์ด ์์
์ ํ์ผ์ ๋ชจ๋ spring-boot-autoconfiguration
์ ๋ฏธ๋ฆฌ ์ ์๋์ด ์๊ณ , ์ง์ ๋ ํ๋กํผํฐ ๊ฐ์ ์ฌ์ฉํด ์ค์ ํด๋์ค ๋ด๋ถ ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ค.
Spring Boot Reference Guide - Common Application properties์์ ํ๋กํผํฐ ๊ฐ์ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
์๋ ์ค์ ์ด๋
ธํ
์ด์
์๋ ์ค์ ์กฐ๊ฑด ์ด๋
ธํ
์ด์
์ด๋ ธํ ์ด์ | ์ ์ฉ ์กฐ๊ฑด |
| ํด๋นํ๋ ๋น ํด๋์ค๋ ์ด๋ฆ์ด ๋ฏธ๋ฆฌ ๋น ํฉํ ๋ฆฌ์ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ |
| ํด๋นํ๋ ํด๋์ค๊ฐ ํด๋์ค ๊ฒฝ๋ก์ ์๋ ๊ฒฝ์ฐ |
| ํด๋นํ๋ ํด๋ผ์ฐ๋ ํ๋ซํผ์ด ํ์ฉ ์ํ์ธ ๊ฒฝ์ฐ |
| SpEL์ ์์กดํ๋ ์กฐ๊ฑด์ธ ๊ฒฝ์ฐ |
| JVM ๋ฒ์ ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ |
| JNDI๊ฐ ์ฌ์ฉ๊ฐ๋ฅํ๊ณ ํน์ ์์น์ ์๋ ๊ฒฝ์ฐ |
| ํด๋นํ๋ ๋น ํด๋์ค๋ ์ด๋ฆ์ด ๋ฏธ๋ฆฌ ๋น ํฉํ ๋ฆฌ์ ํฌํจ๋์ด ์์ง ์์ ๊ฒฝ์ฐ |
| ํด๋นํ๋ ํด๋์ค๊ฐ ํด๋์ค ๊ฒฝ๋ก์ ์์ ๊ฒฝ์ฐ |
| ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์๋๊ฒฝ์ฐ |
| ํน์ ํ ํผ๋กํผํฐ๊ฐ ์ง์ ํ ๊ฐ์ ๊ฐ๋ ๊ฒฝ์ฐ |
| ํน์ ๋ฆฌ์์ค๊ฐ ํด๋์ค ๊ฒฝ๋ก์ ์๋ ๊ฒฝ์ฐ |
| ์ง์ ํ ๋น ํด๋์ค๊ฐ ์ด๋ฏธ ๋น ํฉํ ๋ฆฌ์ ํฌํจ๋์ด ์๊ณ ๋จ์ผ ํ๋ณด์๋ก ์ง์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ |
| ์น ์ดํ๋ฆฌ์ผ์ด์ ์ธ ๊ฒฝ์ฐ |
์๋ ์ค์ ์์ ์ด๋
ธํ
์ด์
์ด๋ ธํ ์ด์ | ์ค๋ช |
| ์ง์ ํ ํน์ ์๋ ์ค์ ํด๋์ค๋ค์ด ์ ์ฉ๋ ์ดํ์ ํด๋น ์๋ ์ค์ ์ ์ฉ |
| ์ง์ ํ ํน์ ์๋ ์ค์ ํด๋์ค๋ค์ด ์ ์ฉ๋ ์ด์ ์ ํด๋น ์๋ ์ค์ ์ ์ฉ |
| ์๋ ์ค์ ์์ ์ง์ ์ ์ํ ์คํ๋ง ํ๋ ์์ํฌ์ |
์์
Last updated