πŸ‘©πŸ»‍πŸ’» Developer/Spring

[Spring] μŠ€ν”„λ§μ΄ 주기적으둜 μ˜μ‘΄ν•˜λŠ” 것은?

Junyung 2024. 3. 23. 12:19

μŠ€ν”„λ§(Spring)은 μžλ°” κ°œλ°œμ—μ„œ 널리 μ‚¬μš©λ˜λŠ” ν”„λ ˆμž„μ›Œν¬μ΄λ‹€. 

μ˜μ‘΄μ„± μ£Όμž…(Dependenct Injection)κ³Ό κ΄€λ ¨λœ κΈ°λŠ₯을 μ œκ³΅ν•˜λ©°, κ°œλ°œμžλ“€μ΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 더 λͺ¨λ“ˆν™”ν•˜κ³  μœ μ—°ν•˜κ²Œ λ§Œλ“€μˆ˜ μžˆλ„λ‘ ν•œλ‹€. 

 

κ·Έλ ‡λ‹€λ©΄ μ΄λ•Œ, μŠ€ν”„λ§μ΄ 주기적으둜 μ˜μ‘΄ν•˜λŠ” 것은 λ¬΄μ—‡μΌκΉŒ?

 

μ˜μ‘΄μ„± μ£Όμž… μ»¨ν…Œμ΄λ„ˆ (Dependency Injection Container) 

: μŠ€ν”„λ§μ˜ 핡심은 μ˜μ‘΄μ„± μ£Όμž…(DI) 이닀. DI ContainerλŠ” 객체 κ°„μ˜ μ˜μ‘΄μ„±μ„ κ΄€λ¦¬ν•˜κ³ , ν•„μš”ν•œ μ˜μ‘΄μ„±μ„ μ£Όμž…ν•˜λŠ” 역할을 ν•˜λŠ”λ°, 

μŠ€ν”„λ§μ€ 이λ₯Ό 톡해 λŠμŠ¨ν•œ κ²°ν•©(Loose Coupling)을 μœ μ§€ν•˜λ©° 객체 κ°„μ˜ μ˜μ‘΄μ„±μ„ μ œμ–΄ν•œλ‹€.

 

AOP(Aspect-Oriented Programming) 

: AOPλŠ” μŠ€ν”„λ§μ˜ 또 λ‹€λ₯Έ 핡심 κ°œλ… 쀑 ν•˜λ‚˜λΌκ³  ν•  수 μžˆλ‹€. 

이λ₯Ό 톡해 νš‘λ‹¨ 관심사(Cross-Cutting Concerns)λ₯Ό λͺ¨λ“ˆν™”ν•˜μ—¬ μ½”λ“œ 쀑볡을 쀄이고 μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚¬μˆ˜ μžˆλ‹€. 

μŠ€ν”„λ§μ€ AOPλ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•΄ AspectJ와 같은 라이브러리λ₯Ό μ‚¬μš©ν•œλ‹€. 

 

라이프사이클 이벀트(Lifecycle Events) 

: μŠ€ν”„λ§ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ΄ˆκΈ°ν™”μ™€ μ’…λ£Œμ™€ 같은 라이프사이클 이벀트λ₯Ό κ°€μ§„λ‹€. 

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ»¨ν…μŠ€νŠΈκ°€ μ΄ˆκΈ°ν™”λ˜κ±°λ‚˜ μ’…λ£Œλ  λ•Œ μ΄λŸ¬ν•œ 이벀트λ₯Ό μΊμΉ˜ν•˜κ³  μ μ ˆν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€. 

 

BeanPostProcessor 와 BeanFactoryPostProcessor 

: 이 두 μΈν„°νŽ˜μ΄μŠ€λŠ” μŠ€ν”„λ§μ΄ λΉˆμ„ μƒμ„±ν•˜κ³  κ΅¬μ„±ν•˜λŠ” 과정에 κ°œμž…ν•  수 μžˆλ„λ‘ 도와쀀닀. 

BeanPostProcessorλŠ” 빈이 μƒμ„±λœ ν›„, λΉˆμ„ μˆ˜μ • λ˜λŠ” μ΄ˆκΈ°ν™”ν•  수 μžˆλ„λ‘ ν•˜κ³ , 

BeanFactoryPostProcessorλŠ” 빈 νŒ©ν† λ¦¬ ꡬ성을 μˆ˜μ •ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. 

 

ν”„λ‘œνΌν‹° 파일 및 ν™˜κ²½ μ„€μ • 

: μŠ€ν”„λ§μ€ μ™ΈλΆ€ ν”„λ‘œνΌν‹° νŒŒμΌμ„ λ‘œλ“œν•˜κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™˜κ²½μ„ κ΅¬μ„±ν•˜λŠ”λ° μ‚¬μš©λœλ‹€. 

이λ₯Ό 톡해 ν™˜κ²½μ— 따라 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘μ„ μ„€μ •ν•˜κ³  μ‘°μ •ν•  수 μžˆλ‹€. 

 

μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ 자체 

: μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ μžμ²΄λ„ μŠ€ν”„λ§ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 핡심적인 λΆ€λΆ„ 쀑 ν•˜λ‚˜λΌκ³  말할 수 μžˆλ‹€. 

μŠ€ν”„λ§μ€ 자체 λΌμ΄λΈŒλŸ¬λ¦¬μ™€ λͺ¨λ“ˆλ‘œ κ΅¬μ„±λ˜μ–΄ 있으며, μ΄λŸ¬ν•œ ꡬ성 μš”μ†Œλ“€μ€ μŠ€ν”„λ§ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ€‘μš”ν•œ 역할을 ν•œλ‹€ .