Home > Backend Development > πŸ“š[Backend Development] 빈(Bean)κ³Ό μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ(Spring Container)

πŸ“š[Backend Development] 빈(Bean)κ³Ό μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ(Spring Container)
Backend Ddevelopment Database Server Build System

πŸ“š[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λ₯Ό μ‹€ν˜„ν•˜λŠ” 핡심 ꡬ쑰