[04] Developer Tools

MIIINΒ·2021λ…„ 9μ›” 23일
0

Spring Boot

λͺ©λ‘ 보기
4/9
post-thumbnail

πŸ’ͺ spring-boot-devtools

Spring BootλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ λ”μš± 즐겁게 ν•΄μ£ΌλŠ” 도ꡬ λͺ¨μŒ(spring-boot-devtools)을 μ œκ³΅ν•œλ‹€.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

spring-boot-devtools λͺ¨λ“ˆμ€ μžλ™μ μœΌλ‘œ production λ‹¨κ³„μ—λŠ” λΉ„ν™œμ„±ν™”λ˜λ©°, spring.devtools.restart.enabled μ‹œμŠ€ν…œ μ†μ„±μœΌλ‘œ μ œμ–΄ κ°€λŠ₯ν•˜λ‹€.

// ν™œμ„±ν™”
spring.devtools.restart.enabled=true

// λΉ„ν™œμ„±ν™”
spring.devtools.restart.enabled=false

βœ’οΈ 속성 κΈ°λ³Έκ°’ (Property Defaults)

1. Caching

Spring Boot둜 μ§€μ›λ˜λŠ” μ—¬λŸ¬ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ€ μ„±λŠ₯을 κ°œμ„ ν•˜κΈ° μœ„ν•΄ Cacheλ₯Ό μ‚¬μš©ν•œλ‹€. 예λ₯Ό λ“€μ–΄, ν…œν”Œλ¦Ώ 엔진듀(FreeMarker, Groovy, Thymeleaf, Mustache)은 ν…œν”Œλ¦Ώ νŒŒμΌλ“€μ„ 반볡적으둜 νŒŒμ‹±(parsing)ν•˜λŠ” 것을 ν”Όν•˜κΈ° μœ„ν•΄ 컴파일된(compiled) ν…œν”Œλ¦Ώλ“€μ„ μΊμ‹œ(cache)ν•œλ‹€. λ˜ν•œ, Spring MVCλŠ” 정적 μžμ›λ“€(html, js, css λ“±)을 μ œκ³΅ν•  λ•Œ μ‘λ‹΅μœΌλ‘œ HTTP 캐싱 헀더듀을 μΆ”κ°€ν•  수 μžˆλ‹€.

캐싱은 production λ‹¨κ³„μ—λŠ” 맀우 μœ μš©ν•˜μ§€λ§Œ, development λ‹¨κ³„μ—μ„œλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 방금 μˆ˜μ •ν•œ 사항듀이 λ°˜μ˜λ˜μ§€ μ•ŠκΈ°μ— κΈ°λ³Έκ°’μœΌλ‘œ λΉ„ν™œμ„±ν™” λ˜μ–΄ μžˆλ‹€.

2. Logging

Spring MVC μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 쀑에 μ›Ή μš”μ²­μ— κ΄€ν•œ 더 λ§Žμ€ 정보듀을 ν•„μš”λ‘œ ν•˜κΈ° λ•Œλ¬Έμ—, 개발자 도ꡬ듀은 DEBUG λ‘œκΉ…μ„ 기본적으둜 ν—ˆμš©ν•œλ‹€. DEBUG λ‘œκΉ…μ„ ν—ˆμš©ν•˜λ©΄ λ“€μ–΄μ˜€λŠ” μš”μ²­, μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” ν•Έλ“€λŸ¬, 응닡 κ²°κ³Όλ¬Ό 등을 둜그둜써 확인할 수 μžˆλ‹€.

기본적으둜 μ œκ³΅λ˜λŠ” λ‘œκ·Έλ³΄λ‹€ 더 λ§Žμ€ 정보듀이 ν•„μš”ν•˜λ‹€λ©΄ μ•„λž˜μ˜ 속성듀을 ν™œμ„±ν™”ν•œλ‹€.

spring.mvc.log-request-details=true
spring.codec.log-request-details=true

βœ’οΈ μžλ™ μž¬μ‹œμž‘ (Automatic Restart)

spring-boot-devtools λͺ¨λ“ˆμ€ classpath μ•ˆμ— μžˆλŠ” νŒŒμΌλ“€μ΄ 변경될 λ•Œλ§ˆλ‹€ μžλ™μ μœΌλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž¬μ‹œμž‘ν•œλ‹€. 기본적으둜 classpath μ•ˆμ— μžˆλŠ” λͺ¨λ“  νŒŒμΌλ“€μ΄ λ³€ν™”λ˜λŠ”μ§€ λͺ¨λ‹ˆν„°λ§λ˜μ§€λ§Œ, 정적 μžμ›μ΄λ‚˜ View ν…œν”Œλ¦Ώ 같은 νŠΉμ • μžμ›λ“€μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž¬μ‹œμž‘ν•˜μ§€ μ•ŠλŠ”λ‹€.

  • μžμ› μ œμ™Έ
    νŠΉμ • μžμ›λ“€μ΄ 변경될 λ•Œ μž¬μ‹œμž‘μ΄ ν•„μš”ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ œμ™Έ λͺ©λ‘μœΌλ‘œ μΆ”κ°€ν•  수 μžˆλ‹€. 기본적으둜 /META-INF,maven, /META-INF/resources, /resources, /static, /public, /templates 내에 μž‡λŠ” μžμ›λ“€μ€ μž¬μ‹œμž‘μ„ μœ λ°œν•˜μ§€ μ•Šκ³  LiveReloadλœλ‹€.
spring.devtools.restart.exclude=static/**,public/**
  • μžλ™ μž¬μ‹œμž‘ λΉ„ν™œμ„±ν™”
spring.devtools.restart.enabled=false
  • Trigger File
    κ³„μ†ν•΄μ„œ λ³€κ²½λœ νŒŒμΌλ“€μ„ μ»΄νŒŒμΌν•˜λŠ” IDEμ—μ„œ μž‘μ—…ν•œλ‹€λ©΄, νŠΉμ •ν•œ μ‹œμ μ—λ§Œ μž¬μ‹œμž‘ν•˜λ„λ‘ ν•˜κ³  싢을 것이닀. "trigger file"을 μ΄μš©ν•˜μ—¬ 이 파일이 λ³€κ²½λ˜μ—ˆμ„λ•Œλ§Œ μž¬μ‹œμž‘λ˜λ„λ‘ ν•  수 μžˆλ‹€.
spring.devtools.restart.trigger-file=.reloadtrigger

βœ’οΈ LiveReload

spring-boot-devtools λͺ¨λ“ˆμ€ λ‚΄μž₯된 LiveReload μ„œλ²„λ₯Ό μ œκ³΅ν•œλ‹€. LiveReload μ„œλ²„λŠ” μžμ›(resource)이 λ³€κ²½λ λ•Œ λΈŒλΌμš°μ €λ₯Ό μƒˆλ‘œκ³ μΉ¨ ν•˜λ„λ‘ ν•  수 μžˆλ‹€. LiveReload λΈŒλΌμš°μ € ν™•μž₯ κΈ°λŠ₯듀은 Chrome, Firefox 그리고 Safariμ—μ„œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.

λ§Œμ•½ LiveReload μ„œλ²„λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ €λ©΄ λ‹€μŒκ³Ό 같이 μ„€μ •ν•œλ‹€.

spring.devtools.livereload.enabled=false

πŸƒ λ‹€μŒμœΌλ‘œ Spring Boot의 κΈ°λŠ₯듀을 깊게 μ•Œμ•„λ³΄μž~

profile
λ°±μ—”λ“œκ°œλ°œμž

0개의 λŒ“κΈ€