π[Spring] μ€νλ§ μ»¨ν μ΄λμ μ€νλ§ λΉμ λν΄μβ¦
πμ€νλ§ μ»¨ν μ΄λμ μ€νλ§ λΉμ λν΄μ
1. μ€νλ§ μ»¨ν μ΄λ
μ€νλ§ μ»¨ν
μ΄λλ 무μμΌκΉ?
μ€νλ§ μ»¨ν
μ΄λλ
μ€νλ§μμ μλ° κ°μ²΄λ€μ κ΄λ¦¬νλ 곡κ°μ λ§νλ€.
μλ° κ°μ²΄λ₯Ό μ€νλ§μμ λΉ(Bean)
μ΄λΌκ³ νλλ°, μ€νλ§ μ»¨ν
μ΄λμμλ μ΄ λΉμ μμ±λΆν° μλ©ΈκΉμ§λ₯Ό κ°λ°μ λμ κ΄λ¦¬ν΄μ£Όλ κ³³μ΄λΌκ³ ν μ μλ€.
μ€νλ§ μ»¨ν
μ΄λλ ν¬κ² λ μ’
λ₯λ‘ λλ μ μλ€.
μ€νλ§ μ»¨ν
μ΄λλ ν¬κ² λ μ’
λ₯λ‘ λλ μ μλ€.
νλλ BeanFactory
μ΄κ³ , λ€λ₯Έ νλλ ApplicationContext
μ΄λ€.
νμ§λ§, ApplicationContextκ° BeanFactoryλ₯Ό ν¬κ΄νλ κ°λ
μ΄λΌ λλΆλΆ ApplicationContextλ₯Ό μ¬μ©νλ€!
κ·ΈλΌ μ€νλ§ μ»¨ν
μ΄λμ λΉμ μ¬μ©νλ μ΄μ λ λλ°?
μ€νλ§ μ»¨ν
μ΄λμ κ°μ²΄, λΉμ λ±λ‘νλ μ΄μ λ μ€νλ§μ΄ κ° κ°μ²΄κ° μμ‘΄κ΄κ³
λ₯Ό κ΄λ¦¬νλλ‘ νκΈ° μν¨μ΄λ€.
κ°μ²΄κ° μμ‘΄κ΄κ³λ₯Ό λ±λ‘ν λλ μ€νλ§ μ»¨ν
μ΄λμμ ν΄λΉνλ λΉμ μ°Ύκ³ , κ·Έ λΉκ³Ό μμ‘΄μ±μ λ§λ λ€.
[컨ν μ΄λμ λΉ λ±λ‘ νν]
λΉ μ΄λ¦ | λΉ κ°μ²΄ |
---|---|
Β | |
Β | |
Β |
2. μ€νλ§ λΉ
μλ° κ°μ²΄ == λΉμ΄κ³ , μ€νλ§ μ»¨ν
μ΄λμ μ€νλ§ λΉμ λ±λ‘νλ κ²μ μκ² λλ° μ΄λ»κ² νλλ°?
μ€νλ§μ 보ν΅μ κ²½μ° μ€νλ§ μ»¨ν
μ΄λμ λΉ μΈμ€ν΄μ€λ₯Ό λ¨ νκ°λ§ μ μ₯νλ μ±κΈν€ λ°©μμ μ¬μ©νλ€.
κ·Έλμ βλΉ μ΄λ¦μ νμ λ€λ₯΄κ² μ§μ βμ΄ λμ΄μΌ ν©λλ€.
κ·Έλ λ€λ©΄ μ€νλ§ λΉμ μ΄λ»κ² λ±λ‘ν κΉ? 2κ°μ§ λ°©λ²μ΄ μλ€.
2.1. μλ λΉ λ±λ‘
μλ λΉ λ±λ‘μ @Component
μ λ
Έν
μ΄μ
μ μ¬μ©νλ μ»΄ν¬λνΈ μ€μΊ
λ°©μμ΄λ€.
@Controller
, @Service
, @Repository
κ°μ μ λ
Έν
μ΄μ
λ€μ μΈν°νμ΄μ€λ₯Ό 보면 @Component
λ₯Ό ν¬ν¨νκ³ μμ΄μ μ μ λ
Έν
μ΄μ
λ€μ μ¬μ©ν΄λ λΉμ΄ μλμΌλ‘ λ±λ‘λλ€.
2.2. μλ λΉ λ±λ‘
@Configuration
κ³Ό @Bean
μ λ
Έν
μ΄μ
μ μ¬μ©νλ€.
μ€νλ§ μ€μ μ 보 ν΄λμ€(ex) AppConfig)μ @Configuration
μ λ
Έν
μ΄μ
μ λΆμ¬ μ€μ μ 보 ν΄λμ€μμ λͺ
μνλ€.
κ·Έλ¦¬κ³ λΉμΌλ‘ λ±λ‘ν κ°μ²΄μ μμ±μμ @Bean
μ λ
Έν
μ΄μ
μ λΆμΈλ€.
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
}
2.2.1. μ€νλ§ λΉ κ΄λ ¨ λ©μλ
ApplicationContext νμ
μ λ³μλ₯Ό acλΌκ³ νμ.
getBean()
νΉμ μ€νλ§ λΉμ μ‘°ννλλ° μ¬μ©ν¨.
νλΌλ―Έν°λ‘ μ¬λ¬ μ’
λ₯κ° μ¬ μ μλλ° μλμ κ°λ€.
- ac.getBaen(classνμ )
- ac.getBean(λΉ μ΄λ¦, classνμ )
- ac.getBean(λΉ μ΄λ¦)
getBeanDefinitionNames()
μ€νλ§μ λ±λ‘λ λͺ¨λ λΉλ€μ μ‘°νν¨.
λκΈλ¨κΈ°κΈ°