Skip to content

Latest commit

Β 

History

History
38 lines (27 loc) Β· 1.83 KB

File metadata and controls

38 lines (27 loc) Β· 1.83 KB

@PreDestroy μ–΄λ…Έν…Œμ΄μ…˜

@PreDestroy μ–΄λ…Έν…Œμ΄μ…˜μ€ Java의 Java EE (Enterprise Edition) 및 Spring ν”„λ ˆμž„μ›Œν¬μ—μ„œ μ‚¬μš©ν•˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜μœΌλ‘œ, 빈(Bean)이 μ†Œλ©Έλ˜κΈ° 전에 호좜될 λ©”μ„œλ“œλ₯Ό μ§€μ •ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. 주둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μžμ›μ„ μ •λ¦¬ν•˜κ±°λ‚˜ μ’…λ£Œ μž‘μ—…μ„ μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

μ£Όμš” κ°œλ…

  • @PreDestroy μ–΄λ…Έν…Œμ΄μ…˜μ˜ λ™μž‘:
    • 빈이 μ»¨ν…Œμ΄λ„ˆ(Spring λ˜λŠ” Java EE μ»¨ν…Œμ΄λ„ˆ)에 μ˜ν•΄ 제거되기 직전에 μ‹€ν–‰λ˜λŠ” λ©”μ„œλ“œλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
    • 이 λ©”μ„œλ“œλŠ” 빈의 라이프사이클이 끝날 λ•Œ ν˜ΈμΆœλ˜μ–΄, ν•΄λ‹Ή 빈이 μ‚¬μš©ν•œ λ¦¬μ†ŒμŠ€λ‚˜ μ—°κ²°λœ μžμ›(파일, λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° λ“±)을 μ•ˆμ „ν•˜κ²Œ 정리할 수 μžˆλŠ” 기회λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ‚¬μš© μ˜ˆμ‹œ:
import javax.annotation.PreDestroy;

public class MyBean {

    // 빈이 μ†Œλ©Έλ˜κΈ° 전에 ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œ
    @PreDestroy
    public void cleanup() {
        System.out.println("Cleaning up resources before bean is destroyed");
        // λ¦¬μ†ŒμŠ€ 정리, 파일 λ‹«κΈ°, DB μ—°κ²° μ’…λ£Œ λ“±
    }
}

Springμ—μ„œμ˜ ν™œμš©

  • Springμ—μ„œ @PreDestroyλŠ” 보톡 싱글톀 λΉˆμ΄λ‚˜ ν”„λ‘œν† νƒ€μž… λΉˆμ— λŒ€ν•΄ μ‚¬μš©λ˜λ©°, ν•΄λ‹Ή 빈이 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ— μ˜ν•΄ κ΄€λ¦¬λ˜κ³  μ†Œλ©Έλ  λ•Œ ν˜ΈμΆœλ©λ‹ˆλ‹€.
  • 빈이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ„ λ•Œλ‚˜, μ»¨ν…Œμ΄λ„ˆκ°€ μ’…λ£Œλ  λ•Œ, @PreDestroyκ°€ 뢙은 λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ©λ‹ˆλ‹€.

자주 μ“°μ΄λŠ” 상황

  • λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° ν•΄μ œ
  • νŒŒμΌμ΄λ‚˜ λ„€νŠΈμ›Œν¬ μžμ› 정리
  • μŠ€λ ˆλ“œ ν’€ μ’…λ£Œ
  • μΊμ‹œ 정리

@PreDestroyλŠ” μžμ›μ„ μ•ˆμ „ν•˜κ²Œ μ •λ¦¬ν•˜μ—¬ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ‚˜ μžμ› 잠금과 같은 문제λ₯Ό λ°©μ§€ν•˜λŠ” 데 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.