μ€νλ§ μ»¨ν
μ΄λλ?μ€νλ§ μ»¨ν
μ΄λλ μ€νλ§ νλ μ μν¬μ μ€μ¬μμ λμνλ ν΅μ¬ κ΅¬μ± μμ컨ν
μ΄λλ μ ν리μΌμ΄μ
μμ μ¬μ©νλ κ°μ²΄(Bean)λ₯Ό μμ±νκ³ , μ€μ νλ©°, κ΄λ¦¬νλ μν μ ν¨. μ΄λ₯Ό ν΅ν΄ κ°μ²΄ κ°μ μμ‘΄μ±μ κ΄λ¦¬νκ³ , μ ν리μΌμ΄μ
μ μ€μ κ³Ό ꡬμ±μ κ°μνν μ μλ€. μ€νλ§ μ»¨ν
μ΄λμ μ£Όμ κΈ°λ₯1. Bean μμ± : 컨ν
μ΄λλ μ ν리μΌμ΄μ
μ νμν Beanμ μμ±2. μμ‘΄μ± μ£Όμ
: 컨ν
μ΄λλ Bean κ°μ μμ‘΄μ±μ μ€μ ν¨3. λΌμ΄νμ¬μ΄ν΄ κ΄λ¦¬ : λΉμ μμ±κ³Ό μλ©Έ λ±μ λΌμ΄ν μ¬μ΄ν΄μ κ΄λ¦¬νλ€.4. μ€μ κ΄λ¦¬ : 컨ν
μ΄λλ μ€μ νμΌμ΄λ μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μ ν리μΌμ΄μ
μ μ€μ μ κ΄λ¦¬ν¨ μ€νλ§ μ»¨ν
μ΄λμ μ’
λ₯- ApplicationContext : λλΆλΆμ μ€νλ§ μ ν리μΌμ΄μ
μμ μ¬μ©νλ ..
πμ€ν°λ/μ€νλ§
μ»΄ν¬λνΈ μ€μΊμ΄λ?μ€νλ§ μ»΄ν¬λνΈ μ€μΊμ μ€νλ§ μ»¨ν
μ΄λκ° νΉμ ν¨ν€μ§λ₯Ό μ€μΊνμ¬, @Component μ΄λ
Έν
μ΄μ
μ΄ λΆμ ν΄λμ€λ₯Ό μλμΌλ‘ λΉ(Bean)μΌλ‘ λ±λ‘νλ κΈ°λ₯μ΄λ€. μλμΌλ‘ λΉμ λ±λ‘νλ λ²κ±°λ‘μμ μ€μ΄κ³ , μ½λμ κ°λ
μ±κ³Ό μ μ§λ³΄μμ±μ λμΌ μ μλ€. μ»΄ν¬λνΈ μ€μΊμ μ₯μ - μλν : @Component μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μλμΌλ‘ λΉμ λ±λ‘ ν μ μλ€.- κ°νΈν¨, μ μ°μ± : λΉ λ±λ‘μ μν μ€μ μ½λκ° μ€μ΄λ€μ΄ κ°νΈνκ³ , νΉμ ν¨ν€μ§λ₯Ό μ€μΊνμ¬ νμν λΉμ μλμΌλ‘ λ±λ‘νλ―λ‘, λ³κ²½μ μ μ°νκ² λμ κ°λ₯ μ»΄ν¬λνΈ μ€μΊ μ€μ λ°©λ² XML μ€μ com.example ν¨ν€μ§μ κ·Έ μλ ν¨ν€μ§μμ @Component κ° λΆμ ν΄λμ€λ₯Ό μ€μΊνμ¬ λΉμΌλ‘ λ±λ‘νλ€. Java Configμ€μ @Conf..
μ€νλ§ AOPλ?AOPμ κ°λ
AOP(Aspect-Oriented Programming, κ΄μ μ§ν₯ νλ‘κ·Έλλ°)λ μ ν리μΌμ΄μ
μ ν‘λ¨ κ΄μ¬μ¬(Cross-Cutting Concerns)λ₯Ό λͺ¨λννκΈ° μν νλ‘κ·Έλλ° ν¨λ¬λ€μμ. ν‘λ¨ κ΄μ¬μ¬λ μ ν리μΌμ΄μ
μ μ¬λ¬ λΆλΆμμ 곡ν΅μ μΌλ‘ λνλλ κΈ°λ₯μΌλ‘, λ‘κΉ
, 보μ, νΈλμμ
κ΄λ¦¬ λ±μ΄ ν¬ν¨λ¨. AOPμ μ₯μ μ½λ μ€λ³΅ κ°μ: κ³΅ν΅ κΈ°λ₯μ λΆλ¦¬νμ¬ μ½λ μ€λ³΅μ μ€μΌ μ μμ.μ μ§λ³΄μμ± ν₯μ: κ³΅ν΅ κΈ°λ₯μ΄ λ³κ²½λ λ ν΄λΉ κΈ°λ₯λ§ μμ νλ©΄ λλ―λ‘ μ μ§λ³΄μκ° μ©μ΄ν¨.λͺ¨λν: κ³΅ν΅ κΈ°λ₯μ λ³λμ λͺ¨λλ‘ λΆλ¦¬νμ¬ μ½λμ λͺ¨λνλ₯Ό ν₯μμν΄. μ€νλ§ AOPμ κ΅¬μ± μμAspectAspectλ ν‘λ¨ κ΄μ¬μ¬λ₯Ό λͺ¨λνν κ²μ. @Aspect μ΄λ
Έν
μ΄μ
μ μ¬μ©νμ¬ μ μν μ μμ.@..
1. μ€νλ§ MVCλ?μ€νλ§ mvcλ μ€νλ§ νλ μμν¬μ μΌλΆλ‘, μΉ μ ν리μΌμ΄μ
μ κ°λ°νκΈ° μν κ°λ ₯ν μΉ νλ μμν¬μ΄λ€.MVC μν€ν
μ³λ₯Ό λ°λ₯΄λ©°, μ ν리μΌμ΄μ
μ λΉμ¦λμ€ λ‘μ§κ³Ό νλ μ ν
μ΄μ
κ³μΈ΅μ λΆλ¦¬νμ¬ κ°λ°μ μ μ°μ±κ³Ό μ μ§λ³΄μμ±μ λμΈλ€. MVC μν€ν
μ²λ?λ보기MVC μν€ν
μ²λ μ ν리μΌμ΄μ
μ μΈ κ°μ§ μ£Όμ μ»΄ν¬λνΈλ‘ λΆλ¦¬νλ λμμΈ ν¨ν΄μ΄λ€.- Model : μ ν리μΌμ΄μ
μ λ°μ΄ν°μ λΉμ¦λμ€ λ‘μ§μ λ΄λΉ- View : μ¬μ©μμκ² λ°μ΄ν°λ₯Ό μμμ μΌλ‘ νμνλ λΆλΆ- Controller : μ¬μ©μ μ
λ ₯μ μ²λ¦¬νκ³ , λͺ¨λΈκ³Ό λ·° μ¬μ΄μ μΈν°λμ
μ κ΄λ¦¬ 2. μ€νλ§ MVCμ μ£Όμ κ΅¬μ± μμDispatcherServletDispatcherServletμ μ€νλ§ MVCμ νλ‘ νΈ μ»¨νΈλ‘€λ¬ μν μ νλ©°, λͺ¨λ ..
π€μ€νλ§ μ»΄ν¬λνΈ μ€μΊμ΄λ? μ€μ μ 보 ν΄λμ€μ @ComponentScan μ΄λ
Έν
μ΄μ
μ λΆμ΄λ©΄ @Bean μ΄λ
Έν
μ΄μ
μ΄ λΆμ λ©μλλ₯Ό μ μν΄μ£Όμ§ μμλ μλμΌλ‘ μ€νλ§μ΄ @Component μ΄λ
Έν
μ΄μ
μ΄ λΆμ ν΄λμ€μ κ°μ²΄λ€μ λΉμΌλ‘ λ±λ‘ν΄μ€ μλ λ±λ‘μμ λ©μλλͺ
μ λΉμ μ΄λ¦μΌλ‘ μ¬μ©ν¨ μ»΄ν¬λνΈ μ€μΊ λ°©μμ ν΄λμ€ μ΄λ¦μ μκΈμλ₯Ό μλ¬Έμλ‘ λ°κΏμ μ¬μ©ν¨ λΉ μ΄λ¦ λΉ κ°μ²΄ createOrderServiceImpl CreateOrderServiceImpl@x01 memberRepositoryImpl MemberRepositoryImpl@x02 @Bean("customName") μ²λΌ κΈ°λ³Έκ° λμ μ¬μ©ν λΉμ μ΄λ¦μ μ§μ ν μ μλ κ²μ²λΌ @Component("customName") μΌλ‘ λΉμ μ΄λ¦μ μ§μ μ§μ ν΄..
π€μ€νλ§ μ»¨ν
μ΄λμ΄λ? 컨ν
μ΄λλ λ³΄ν΅ κ°μ²΄(Bean)λ€μ μλͺ
μ£ΌκΈ°(Life Cycle)λ₯Ό κ΄λ¦¬νλ©°, μμλ μΈμ€ν΄μ€λ€μκ² μΆκ°μ μΈ κΈ°λ₯μ μ 곡νλλ‘ νλ κ²μ
λλ€. ApplicationContextλ₯Ό μ€νλ§ μ»¨ν
μ΄λλΌκ³ λΆλ¦¬κΈ°λ ν©λλ€. IoCμμΉμ κΈ°λ°μΌλ‘ λμν©λλ€. μ΄λ μ ν리μΌμ΄μ
μ μ μ΄ νλ¦μ΄ κ°λ°μκ° μλ 컨ν
μ΄λμ μν΄ κ²°μ λλ κ²μ μλ―Έν©λλ€. λ보기 π€IoC ( Inversion Of Control)λ? μ μ΄μ μμ μ΄λΌκ³ νλ©° νλ‘κ·Έλ¨μ νλ¦μ κ°λ°μκ° μλ νλ μμν¬κ° κ΄λ¦¬νλ κ²μ μλ―Έν©λλ€. μΌλ°μ μΌλ‘ μλ°μμλ κ°λ°μκ° κ° κ°μ²΄λ₯Ό μμ±νκ³ μ μ΄ν΄μΌ νμ§λ§ μ€νλ§μμλ 컨ν
μ΄λμ Beanμ λ±λ‘νκΈ°λ§ νλ©΄, μ€νλ§ μ»¨ν
μ΄λμμ κ°μ²΄μ μλͺ
μ£ΌκΈ°λ₯Ό 컨νΈλ‘€ν©λλ€. μ¦, κ°μ²΄μ λν μ ..