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μμ νλ‘νΌν° κ°μ μ½κ² νμΈν μ μλ€.
μλ μ€μ μ΄λ
Έν
μ΄μ
μλ μ€μ 쑰건 μ΄λ
Έν
μ΄μ
μ΄λ Έν μ΄μ
μ μ© μ‘°κ±΄
@ConditionalOnBean
ν΄λΉνλ λΉ ν΄λμ€λ μ΄λ¦μ΄ 미리 λΉ ν©ν 리μ ν¬ν¨λμ΄ μλ κ²½μ°
@ConditionalOnClass
ν΄λΉνλ ν΄λμ€κ° ν΄λμ€ κ²½λ‘μ μλ κ²½μ°
@ConditionalOnCloudPlatform
ν΄λΉνλ ν΄λΌμ°λ νλ«νΌμ΄ νμ© μνμΈ κ²½μ°
@ConditionalOnExpression
SpELμ μμ‘΄νλ μ‘°κ±΄μΈ κ²½μ°
@ConditionalOnJava
JVM λ²μ μ΄ μΌμΉνλ κ²½μ°
@ConditionalOnJndi
JNDIκ° μ¬μ©κ°λ₯νκ³ νΉμ μμΉμ μλ κ²½μ°
@ConditionalOnMissingBean
ν΄λΉνλ λΉ ν΄λμ€λ μ΄λ¦μ΄ 미리 λΉ ν©ν 리μ ν¬ν¨λμ΄ μμ§ μμ κ²½μ°
@ConditionalOnMissingClass
ν΄λΉνλ ν΄λμ€κ° ν΄λμ€ κ²½λ‘μ μμ κ²½μ°
@ConditionalOnNotWebApplication
μΉ μ΄ν리μΌμ΄μ μ΄ μλκ²½μ°
@ConditionalOnProperty
νΉμ ν νΌλ‘νΌν°κ° μ§μ ν κ°μ κ°λ κ²½μ°
@ConditionalOnResource
νΉμ 리μμ€κ° ν΄λμ€ κ²½λ‘μ μλ κ²½μ°
@ConditionalOnSingleCandidate
μ§μ ν λΉ ν΄λμ€κ° μ΄λ―Έ λΉ ν©ν 리μ ν¬ν¨λμ΄ μκ³ λ¨μΌ ν보μλ‘ μ§μ κ°λ₯ν κ²½μ°
@ConditionalOnWebApplication
μΉ μ΄ν리μΌμ΄μ μΈ κ²½μ°
μλ μ€μ μμ μ΄λ
Έν
μ΄μ
μ΄λ Έν μ΄μ
μ€λͺ
@AutoConfigureAfter
μ§μ ν νΉμ μλ μ€μ ν΄λμ€λ€μ΄ μ μ©λ μ΄νμ ν΄λΉ μλ μ€μ μ μ©
@AutoConfigureBefore
μ§μ ν νΉμ μλ μ€μ ν΄λμ€λ€μ΄ μ μ©λ μ΄μ μ ν΄λΉ μλ μ€μ μ μ©
@AutoConfigureOrder
μλ μ€μ μμ μ§μ μ μν μ€νλ§ νλ μμν¬μ @Order
μ΄λ
Έν
μ΄μ
λ³νμΌλ‘ κΈ°μ‘΄ μ€μ ν΄λμ€μλ μν₯μ μ£Όμ§ μκ³ μλ μ€μ ν΄λμ€λ€ κ°μ μμλ§ μ§μ νλ€.
μμ
Last updated
Was this helpful?