π[Backend Development] λΉ(Bean)κ³Ό μ€νλ§ μ»¨ν μ΄λ(Spring Container)
Beanκ³Ό Spring Containerλ Spring Frameworkμ ν΅μ¬ κ°λ μΌλ‘, μ€νλ§μ΄ κ°μ²΄λ₯Ό κ΄λ¦¬νλ λ°©μμ μ΄ν΄νλ λ° λ§€μ° μ€μν©λλ€.
β 1. λΉ(Bean)μ΄λ?
π μ μ
μ€νλ§ μ»¨ν μ΄λμ μν΄ μμ±λκ³ κ΄λ¦¬λλ κ°μ²΄
- κ°λ°μκ° @Component, @Service, @Repository, @Configuration, @Bean λ±μ μ΄λ Έν μ΄μ μΌλ‘ λ±λ‘νλ©΄ μ€νλ§μ΄ ν΄λΉ κ°μ²΄λ₯Ό μμ±νκ³ , μμ‘΄μ±μ μ£Όμ νλ©°, μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬ν©λλ€.
π§Beanμ μμ
@Component
public class UserService {
// μ΄ ν΄λμ€λ μ€νλ§ λΉμ΄λ€.
}
λλ
@Configuration
public class AppConfig {
@Bean
public ArticleService articleService() {
retutn new ArticleService();
}
}
β 2. μ€νλ§ μ»¨ν μ΄λ(Spring Container)λ?
π μ μ
λΉμ μμ±νκ³ κ΄λ¦¬νλ κ°μ²΄ μ μ₯μ
- ApplicationContext λλ BeanFactoryκ° λνμ μΈ μ»¨ν μ΄λμ λλ€.
- μ ν리μΌμ΄μ μ€ν μ 컨ν μ΄λκ° μ΄κΈ°νλλ©°, λ΄λΆμ Bean κ°μ²΄λ€μ μ±κΈν€μΌλ‘ 보κ΄νκ³ κ΄λ¦¬ν©λλ€.
π§ λΉμ
βμ€νλ§ μ»¨ν μ΄λλ λΉμ λ΄λ κ°μ²΄ μ°½κ³ λ€. νμν κ°μ²΄(Bean)λ₯Ό κΊΌλ΄ μ°λ©΄ λλ€.β
βοΈ μ£Όμ μν
- Bean μμ± λ° μ΄κΈ°ν
- μμ‘΄μ± μ£Όμ (DI)
- Bean μλͺ μ£ΌκΈ° κ΄λ¦¬(@PostConstruct, @PreDestory λ±)
- AOP κΈ°λ₯ μ 곡
β κ΄κ³ μ 리
κ°λ | μ€λͺ |
---|---|
Bean | μ€νλ§μ΄ κ΄λ¦¬νλ κ°μ²΄ |
Container | Beanλ€μ μμ±νκ³ κ΄λ¦¬νλ μ€νλ§μ ν΅μ¬ μμ§ |
λ±λ‘ λ°©λ² | @Component, @Service, @Repository, @Configuration + @Bean λ± |
μ 곡 ν΄λμ€ | ApplicationContext, AnnotationConfigApplicatioonContext, WebAppplicationContext λ± |
β κ·Έλ¦ΌμΌλ‘ λΉμ
[Spring Container]
βββ UserService (Bean)
βββ ArticleService (Bean)
βββ UserRepository (Bean)
βββ DataSource (Bean)
β κ°λ°μλ μ§μ new νμ§ μκ³ , μ€νλ§μ΄ λμ μμ±ν΄μ£Όλ Beanμ λ°μμ μ¬μ©ν©λλ€.
β μμ½
κ°λ | μ€λͺ |
---|---|
Bean | μ€νλ§μ΄ μμ±νκ³ κ΄λ¦¬νλ κ°μ²΄ |
Spring Container | Beanμ μμ±, μ£Όμ , μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ κ°μ²΄ μ μ₯μ |
μλ―Έ | IoC/DIλ₯Ό μ€ννλ ν΅μ¬ ꡬ쑰 |