[Spring] μ€νλ§μ΄ μ£ΌκΈ°μ μΌλ‘ μμ‘΄νλ κ²μ?
μ€νλ§(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λ λΉ ν©ν 리 ꡬμ±μ μμ ν μ μλ κΈ°λ₯μ μ 곡νλ€.
νλ‘νΌν° νμΌ λ° νκ²½ μ€μ
: μ€νλ§μ μΈλΆ νλ‘νΌν° νμΌμ λ‘λνκ³ μ ν리μΌμ΄μ νκ²½μ ꡬμ±νλλ° μ¬μ©λλ€.
μ΄λ₯Ό ν΅ν΄ νκ²½μ λ°λΌ μ ν리μΌμ΄μ μ λμμ μ€μ νκ³ μ‘°μ ν μ μλ€.
μ€νλ§ νλ μμν¬ μ체
: μ€νλ§ νλ μμν¬ μ체λ μ€νλ§ μ ν리μΌμ΄μ μ ν΅μ¬μ μΈ λΆλΆ μ€ νλλΌκ³ λ§ν μ μλ€.
μ€νλ§μ μ체 λΌμ΄λΈλ¬λ¦¬μ λͺ¨λλ‘ κ΅¬μ±λμ΄ μμΌλ©°, μ΄λ¬ν κ΅¬μ± μμλ€μ μ€νλ§ μ ν리μΌμ΄μ μμ μ€μν μν μ νλ€ .