Beans(λΉ)
μ€νλ§ λΉ(Bean) : μ€νλ§ μ»¨ν μ΄λμ μν΄ μμ± λ° κ΄λ¦¬νλ μλ° κ°μ²΄
Beanμ μ€νλ§μ ꡬμ±νλ ν΅μ¬μμλ‘, μλμ κ΅¬μ± μμλ₯Ό κ°μ§κ³ μλ€.
class(ν΄λμ€): BeanμΌλ‘ λ±λ‘ν Java ν΄λμ€
μ€νλ§ μ»¨ν μ΄λμ μν΄ κ°μ²΄λ‘ μμ± λ° κ΄λ¦¬λμ΄ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό BeanμΌλ‘ μ¬μ©
μ΄ν νμν κ³³μμ ν΄λΉ Beanμ μ£Όμ νμ¬ μ¬μ©
id(κ³ μ μλ³μ): κ° Beanμ κ³ μ ν μλ³μ
μ€νλ§ μ»¨ν μ΄λμμ κ° Beanμ μλ³ λ° μ‘°νν λ μ¬μ©
scope(λ²μ): ν΄λΉ Beanμ΄ μ ν¨ λ²μ μ μ± μ μ
Singleton / Prototype / Request / Session / Global Session μ‘΄μ¬(κΈ°λ³Έκ°: Singleton)
constructor arguments(μμ±μ μΈμ): Beanμ μμ±ν λ μμ±μμ μ λ¬ν μΈμλ€μ μ μ
Beanμ μ΄κΈ°ννλ λ° μ¬μ©
μ μλ μμ±μμ λμνλ κ°μ λ£μ΄ Beanμ μμ±ν λ μ¬μ©
property(μμ±): Beanμ μμ±ν λ setterλ₯Ό ν΅ν΄ μ λ¬ν μΈμλ€μ μ μ
μ€νλ§ λΉ λ±λ‘
μ€νλ§ λΉμ λ±λ‘ν λ νμ¬ μ£Όλ‘ μ¬μ©λλ λ°©λ²μ ν¬κ² 2κ°μ§λ‘, μ»΄ν¬λνΈ μ€μΊμ ν΅ν λ±λ‘κ³Ό @Bean
/ @Configuration
μ ν΅ν λ±λ‘μ΄ μλ€.
1. μ»΄ν¬λνΈ μ€μΊμ ν΅ν λ±λ‘
@Component
Annotationμ΄ μμ κ²½μ° μ€νλ§ λΉμΌλ‘ μλ λ±λ‘νλ λ°©λ²μΌλ‘ μ£Όλ‘ μ¬μ©λλ λ°©λ²μ΄λ€.
ν΄λμ€μ
@Component
(@Controller
/@Service
... etc) μ μΈμμ±μμ
@Autowired
μ μΈ
μ μΈμ νμ¬ λ±λ‘ν΄λλ©΄, μ ν리μΌμ΄μ μ΄ μ€νλμ΄ κ°μ²΄ μμ± μμ μ μ€νλ§μ΄ μλΉμ€ κ°μ²΄λ₯Ό μ°κ²°νκΈ° μν΄ μ°κ΄λ κ°μ²΄λ₯Ό μ€νλ§ μ»¨ν μ΄λμμ μ°Ύμ μμ‘΄μ± μ£Όμ μ μννλ€.
μμ‘΄μ± μ£Όμ μ΄ μλ£λ νμλ μμ κ°μ΄ μμ‘΄μ± κ΄κ³κ° νμ±λλ€.
2. @Bean / @Configurationμ ν΅ν λ±λ‘
μ νν λμ§ μμ μ½λκ±°λ, μν©μ λ°λΌ ꡬν ν΄λμ€λ₯Ό λ³κ²½ν΄μΌνλ κ²½μ° μ¬μ©νλ λ°©λ²μΌλ‘, @Configuration
ν΄λμ€μ @Bean
μ ν΅ν΄ μ§μ λ±λ‘νλ λ°©λ²μ΄λ€.
κ²°κ³Όλ 1λ²μ μ»΄ν¬λνΈ μ€μΊμ ν΅ν λ±λ‘κ³Ό λμΌνκ² λμνλ€.
λΉ μλͺ
μ£ΌκΈ°
μ€νλ§ λΉμ μμ± - μμ‘΄κ΄κ³ μ£Όμ λ¨κ³λ₯Ό κ±°μ³ μ¬μ©ν μ μλ μνκ° λλ©°, μ€νλ§ λΉμ λλ΅μ μΈ μ΄λ²€νΈ λΌμ΄ν μ¬μ΄ν΄μ μλμ κ°λ€.
μ€νλ§ μ»¨ν μ΄λ μμ±
μ€νλ§ λΉ μμ±
Bean
μΌλ‘ λ±λ‘ν μ μλAnnotation
λ°Configuration
μ μ½μ΄ IoC 컨ν μ΄λ μμBean
μΌλ‘ λ±λ‘μμ‘΄ κ΄κ³ μ£Όμ μ κ°μ²΄ μμ± κ³Όμ μν(Field/Setter μ£Όμ μ κ²½μ°μλ§)
μμ±μ μ£Όμ : κ°μ²΄μ μμ±κ³Ό μμ‘΄κ΄κ³ μ£Όμ μ΄ λμμ λ°μ
Setter/Field μ£Όμ : κ°μ²΄ μμ± --> μμ‘΄ κ΄κ³ μ£Όμ λ¨κ³ λΆλ¦¬
μ΄κΈ°ν μ½λ°±
λΉμ΄ μμ±λκ³ , λΉμ μμ‘΄κ΄κ³ μ£Όμ μ΄ μλ£λ ν νΈμΆ
μ¬μ©
μ€μ μ ν리μΌμ΄μ (λΉ) λμ λ¨κ³
μλ©Έ μ μ½λ°±
λΉμ΄ μλ©ΈλκΈ° μ§μ μ νΈμΆ
μ€νλ§ μ’ λ£
λΉ μλͺ
μ£ΌκΈ°(μ΄κΈ°ν/μλ©Έ) μ½λ°±
μμ μλͺ μ£ΌκΈ° 3, 5λ²μμ λ³Ό μ μλ―μ΄, μμ λ° μ’ λ£ μμ μ μΆκ°μ μΈ μ½λ°± μμ μ μνν μ μλ€. μμ λ° μ’ λ£ μμ μ μΆκ°μ μΈ μμ μ μννκΈ° μν΄ μ€νλ§μ ν¬κ² 3κ°μ§ λ°©λ²μ μ 곡νλ€.(μ€νλλ μμλ μλ λ²νΈ μμλλ‘ μ€νλλ€.)
1. @PostConstruct, @PreDestroy μ λ
Έν
μ΄μ
@PostConstruct: μμ‘΄κ΄κ³ μ£Όμ μ΄ λλλ©΄ νΈμΆ
@PreDestroy: λΉμ΄ μ’ λ£λ λ νΈμΆ
μ΅μ μ€νλ§μμ κ°μ₯ κΆμ₯νλ λ°©λ²
javax.annotation.PostConstruct
μΈ μλ° νμ€ κΈ°μμ»΄ν¬λνΈ μ€μΊκ³Ό κΆν©μ΄ μ’μ
μΈλΆ λΌμ΄λΈλ¬λ¦¬μλ μ μ© λΆκ°λ₯ -> μ΄ κ²½μ°
@Bean
μinitMethod
,destroyMethod
λ₯Ό μ¬μ©
2. μΈν°νμ΄μ€(InitializingBean, DisposableBean)
InitializingBean
InafterPropertiesSet()
: μμ‘΄κ΄κ³ μ£Όμ μ΄ λλλ©΄ νΈμΆDisposableBean
Indestroy()
: λΉμ΄ μ’ λ£λ λ νΈμΆ
μ€νλ§ μ μ© μΈν°νμ΄μ€μ μμ‘΄
μ΄κΈ°ν, μλ©Έ λ©μλμ μ΄λ¦ λ³κ²½ λΆκ°
μ½λλ₯Ό κ³ μΉ μ μλ μΈλΆ λΌμ΄λΈλ¬λ¦¬μ μ μ© λΆκ°
3. μ€μ μ 보μ μ΄κΈ°ν λ©μλ, μ’
λ£ λ©μλ μ§μ
@Bean(initMethod = "init", destroyMethod = "close")
μ΄κΈ°ν/μλ©Έ λ©μλ μ§μ
λ©μλ μ΄λ¦ μμ λ‘κ² μ€μ κ°λ₯
μ€νλ§ λΉμ΄ μ€νλ§ μ½λμ μμ‘΄νμ§ μμ
μ€μ μ 보λ₯Ό μ¬μ©νκΈ° λλ¬Έμ μ½λλ₯Ό κ³ μΉ μ μλ μΈλΆ λΌμ΄λΈλ¬λ¦¬μλ μ΄κΈ°ν, μ’ λ£ λ©μλ μ μ© κ°λ₯
μ’ λ£ λ©μλ μΆλ‘ κΈ°λ₯
@Bean
μdestroyMethod
μμ±μλ μ무κ²λ μ§μ νμ§ μμΌλ©΄ μΆλ‘ κΈ°λ₯μ΄ λμclose
,shutdown
κ°μ μΌλ°μ μΌλ‘ λ§μ΄ μ¬μ©νλ μ’ λ£ λ©μλλ₯Ό μλμΌλ‘ νΈμΆμΆλ‘ κΈ°λ₯μ λ§κΈ° μν΄μ
destroyMethod=""
λ‘ μ§μ ν μ μμ
μ€μ½ν
λΉμ΄ μ‘΄μ¬ν μ μλ λ²μλ₯Ό λ»νλ©°, μ€νλ§ λΉμ΄ κΈ°λ³Έμ μΌλ‘ μ±κΈν€ μ€μ½νλ‘ μμ±λκΈ° λλ¬Έμ λ³΄ν΅ μ€νλ§ μ»¨ν μ΄λμ μμκ³Ό μ’ λ£ μμ κ³Ό κ°μΌλ©° ν¬κ² μΈ κ°μ§ μ€μ½νλ₯Ό μ§μνλ€.
μ±κΈν€(Default): μ€νλ§ μ»¨ν μ΄λμ μμκ³Ό μ’ λ£ μμ μ μμ±λκ³ μλ©Ένλ κ°μ₯ λμ λ²μμ μ€μ½ν, κ°μ₯ λ§μ΄ μ¬μ©λλ μ€μ½ν
νλ‘ν νμ : μ€νλ§ μ»¨ν μ΄λκ° λΉμ μμ±κ³Ό μμ‘΄ κ΄κ³ μ£Όμ κΉμ§λ§ κ΄μ¬νκ³ λλ κ΄λ¦¬νμ§ μλ μ€μ½ν
μΉ κ΄λ ¨ μ€μ½ν
request: μΉ μμ² νλκ° λ€μ΄μ€κ³ λκ° λ κΉμ§ μ μ§λλ μ€μ½ν
session: μΉ Sessionκ³Ό λμΌν μλͺ μ£ΌκΈ°λ₯Ό κ°μ§λ μ€μ½ν
application: μλΈλ¦Ώ 컨ν μ€νΈμ λμΌν μλͺ μ£ΌκΈ°λ₯Ό κ°μ§λ μ€μ½ν
νλ‘ν νμ
μ€μ½ν
μ±κΈν€ μ€μ½νλ μ€νλ§ μ»¨ν μ΄λμμ νμ κ°μ μΈμ€ν΄μ€μ μ€νλ§ λΉμ λ°ννμ§λ§, μ€μ½νμ λΉμ μ€νλ§ μ»¨ν μ΄λμ μμ²ν λλ§λ€ μλ‘ μΈμ€ν΄μ€λ₯Ό μμ±νμ¬ λ°ννλ€.
μ±κΈν€ λΉ / νλ‘ν νμ λΉ λΉκ΅
μ±κΈν€ μ€μ½ν λΉμ μ€νλ§ μ»¨ν μ΄λμ μμ²
νλ‘ν νμ μ€μ½ν λΉμ μ€νλ§ μ»¨ν μ΄λμ μμ²
(μμ² ν λΉμ΄ μ΄λ―Έ μμ±λμ΄ μλ μν)
μμ² μ¨ μμ μ νλ‘ν νμ λΉμ μμ±νκ³ μμ‘΄ κ΄κ³ μ£Όμ
μ€νλ§ μ»¨ν μ΄λκ° κ΄λ¦¬νκ³ μλ λΉ λ°ν
μμ±ν λΉμ λ°ν
κ°μ μμ²μ΄ μλ κ³μ κ°μ μΈμ€ν΄μ€μ μ€νλ§ λΉ λ°ν
κ°μ μμ²μ΄ μ€λ©΄ κ³μ μλ‘μ΄ μΈμ€ν΄μ€μ μ€νλ§ λΉ λ°ν
νλ‘ν νμ λΉ νΉμ§
μ€νλ§ μ»¨ν μ΄λμ μμ²ν λ λ§λ€ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±
μ€νλ§ μ»¨ν μ΄λλ νλ‘ν νμ μ€μ½ν λΉμ
μμ±/μμ‘΄κ΄κ³ μ£Όμ /μ΄κΈ°ν
κΉμ§λ§ μ²λ¦¬μμ± λ° μ΄κΈ°νκΉμ§λ§ μ²λ¦¬νκΈ° λλ¬Έμ
@PreDestroy
κ°μ μ’ λ£ λ©μλλ νΈμΆνμ§ μμνλ‘ν νμ λΉμ νλ‘ν νμ λΉμ μ‘°νν ν΄λΌμ΄μΈνΈκ° κ΄λ¦¬
μ¬λ¬ λΉμμ κ°μ νλ‘ν νμ λΉμ μ£Όμ λ°μΌλ©΄, μ£Όμ λ°μ λͺ¨λ λΉμ κ°μ λ€λ₯Έ μΈμ€ν΄μ€λ₯Ό μ¬μ©(νλμ λΉμμ κ³μ κ°μ νλ‘ν νμ λΉμ κ°μ§)
μ°Έκ³ μλ£
Last updated
Was this helpful?