Springμ μλ‘μ΄ Java κ΅¬μ± μ§μμ μ€μ¬μ @Configuration
-annotated ν΄λμ€μ @Bean
-annotated λ©μλμ΄λ€.
@Bean
μ΄λ
Έν
μ΄μ
μ λ©μλκ° Spring IoC 컨ν
μ΄λμ μν΄ κ΄λ¦¬ λ μλ‘μ΄ κ°μ²΄λ₯Ό μΈμ€ν΄μ€ν,
κ΅¬μ± λ° μ΄κΈ°ννλ€λ κ²μ λνλ΄λ λ° μ¬μ©λλ€.
Springμ <beans/>
XML μ€μ μ μ΅μν λΆλ€μ μν΄ @Bean
μ£Όμμ <bean/>
μμμ λμΌν μν μν©λλ€.
Spring @Component
μ ν¨κ» @Bean
annotated λ©μλλ₯Ό μ¬μ©ν μ μμ§λ§ @Configuration
λΉκ³Ό ν¨κ» μμ£Ό μ¬μ©λ©λλ€.
@Configuration
μ μ¬μ©νμ¬ ν΄λμ€μ μ£Όμμλ€λ κ²μ μ£Όλ λͺ©μ μ΄ Bean μ μμ μμ€μμ λνλ
λλ€.
κ²λ€κ° @Configuration
ν΄λμ€λ κ°μ ν΄λμ€μμ λ€λ₯Έ @Bean
λ©μλλ₯Ό νΈμΆν¨μΌλ‘μ¨ bean κ° μμ‘΄μ±μ μ μ ν μ μκ² νλ€.
κ°μ₯ λ¨μν κ°λ₯ν @Configuration
ν΄λμ€λ λ€μκ³Ό κ°μ΄ μ½μ μ μμ΅λλ€.
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
μμ AppConfig ν΄λμ€λ λ€μ Spring <beans/>
XMLκ³Ό λμΌν©λλ€.
<beans>
<bean id="myService" class="com.acme.services.MyServiceImpl"/>
</beans>
@Bean
λ©μλκ° @Configuration
μΌλ‘ μ£Όμ μ²λ¦¬λμ§ μμ ν΄λμ€ λ΄μμ μ μΈ λ λ 'lite' λͺ¨λμμ μ²λ¦¬λλ κ²μΌλ‘ κ°μ£Όλ©λλ€.
@Component
λλ νλ²ν ꡬμ ν΄λμ€μμ μ μΈ λ Bean λ©μλλ 'lite'λ‘ κ°μ£Όλλ©°,
ν¬ν¨νλ ν΄λμ€μ λ€λ₯Έ μ£Όμ λͺ©μ κ³Ό @Bean
λ©μλκ° κ±°κΈ°μ 보λμ€ μΌλΏμ
λλ€.
μλ₯Ό λ€μ΄, μλΉμ€ κ΅¬μ± μμλ μ μ© κ°λ₯ν κ° κ΅¬μ± μμ ν΄λμ€μ μΆκ° @Bean
λ©μλλ₯Ό ν΅ν΄ κ΄λ¦¬ λ·°λ₯Ό 컨ν
μ΄λμ λ
ΈμΆμν¬ μ μμ΅λλ€.
μ΄λ¬ν μλ리μ€μμ @Bean
λ©μλλ λ¨μν λ²μ© ν©ν 리 λ©μλ λ©μ»€λμ¦μ
λλ€.
μ 체 @Configuration
κ³Ό λ¬λ¦¬ lite @Bean
λ©μλλ bean κ° μμ‘΄μ±μ μ μΈ ν μ μμ΅λλ€.
λμ , κ·Έλ€μ ν¬ν¨νλ κ΅¬μ± μμμ λ΄λΆ μνμ μ νμ μΌλ‘ μ μΈ ν μμλ μΈμμ λ°λΌ μλν©λλ€.
λ°λΌμ μ΄λ¬ν @Bean
λ©μλλ λ€λ₯Έ @Bean
λ©μλλ₯Ό νΈμΆνμ§ μμμΌν©λλ€.
μ΄λ¬ν κ°κ°μ λ©μλλ νΉλ³ν λ°νμ μ맨ν±μμ΄ λ¬Έμ κ·Έλλ‘ λ¨μ§ νΉμ λΉ μ°Έμ‘°μ λν ν©ν 리 λ©μλ μ
λλ€.
μ¬κΈ°μ κΈμ μ μΈ λΆμμ©μ λ°νμμ CGLIB μλΈ ν΄λμ±μ μ μ© ν νμκ° μμΌλ―λ‘
ν΄λμ€ λμμΈ μΈ‘λ©΄μμ μ νμ΄ μλ€λ κ²μ
λλ€ (μ¦, ν¬ν¨ ν΄λμ€κ° μ΅μ’
ν΄λμ€ μΌ μ μμ).
μΌλ°μ μΈ μλ리μ€μμ @Bean
λ©μλλ @Configuration
ν΄λμ€ λ΄μμ μ μΈλλ―λ‘
'μ 체'λͺ¨λκ° νμ μ¬μ©λκ³ ν¬λ‘μ€ λ©μλ μ°Έμ‘°κ° μ»¨ν
μ΄λμ μλͺ
μ£ΌκΈ° κ΄λ¦¬λ‘ 리λλ μ
λ©λλ€.
μ΄λ κ²νλ©΄ λμΌν @Bean
λ©μλκ° μ€μλ‘ 'μ μ'λͺ¨λμμ μλ ν λ
μΆμ νκΈ° μ΄λ €μ΄ λ―Έλ¬ν λ²κ·Έλ₯Ό μ€μ΄λ λ° λμμ΄λλ μΌλ° Java νΈμΆμ ν΅ν΄ νΈμΆλλ κ²μ λ°©μ§ ν μ μμ΅λλ€.
@Bean
κ³Ό @Configuration
μ£Όμμ λ€μ μΉμ
μμ μμΈν λ
Όμ λ κ²μ
λλ€.
κ·Έλ¬λ λ¨Όμ Java κΈ°λ° κ΅¬μ±μ μ¬μ©νμ¬ μ€νλ§ μ»¨ν
μ΄λλ₯Ό λ§λλ λ€μν λ°©λ²μ λ€λ£° κ²μ
λλ€.