Home > Backend Development > πŸ“š[Backend Development] Springμ—μ„œμ˜ μ»΄ν¬λ„ŒνŠΈλž€?

πŸ“š[Backend Development] Springμ—μ„œμ˜ μ»΄ν¬λ„ŒνŠΈλž€?
Backend Ddevelopment Component Server Build System

πŸ“š[Backend Development] Springμ—μ„œμ˜ μ»΄ν¬λ„ŒνŠΈλž€?

Springμ—μ„œ 자주 μ“°μ΄λŠ” μ»΄ν¬λ„ŒνŠΈ(Component) κ°œλ…μ„ μ •λ¦¬ν•΄λ΄…μ‹œλ‹€. 🎁

βœ… 1. μ»΄ν¬λ„ŒνŠΈλž€ λ¬΄μ—‡μΈκ°€μš”?

  • Springμ—μ„œ κ΄€λ¦¬ν•˜λŠ” 객체(Bean) λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
  • @Component μ• λ…Έν…Œμ΄μ…˜μ„ λΆˆν‹°λ©΄ ν•΄λ‹Ή ν΄λž˜μŠ€λŠ” Spring μ»¨ν…Œμ΄λ„ˆκ°€ μžλ™μœΌλ‘œ 탐색(μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”)ν•˜μ—¬ Bean으둜 λ“±λ‘ν•©λ‹ˆλ‹€.
  • 즉, κ°œλ°œμžκ°€ 직접 @Bean으둜 λ“±λ‘ν•˜μ§€ μ•Šμ•„λ„ Spring이 μžλ™μœΌλ‘œ 객체λ₯Ό μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•©λ‹ˆλ‹€.
@Component
public class MyService {
    public void doSomething() {
        System.out.println("Service logic!");
    }
}

βœ… 2. μ»΄ν¬λ„ŒνŠΈμ˜ 역할은 λ¬΄μ—‡μΈκ°€μš”?

  • μžλ™ 등둝 : ν΄λž˜μŠ€μ— @Componentλ₯Ό 뢙이면 μŠ€ν”„λ§μ΄ μžλ™μœΌλ‘œ 객체λ₯Ό μƒμ„±ν•˜κ³ , μ˜μ‘΄μ„±μ„ μ£Όμž…ν•  수 μžˆλ„λ‘ κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • μ˜μ‘΄μ„± μ£Όμž…(DI) : λ“±λ‘λœ μ»΄ν¬λ„ŒνŠΈλŠ” λ‹€λ₯Έ ν΄λž˜μŠ€μ— @Autowired λ˜λŠ” μƒμ„±μž μ£Όμž…μœΌλ‘œ μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ성 μš”μ†Œ ꡬ뢄 : @Service, @Repository, @Controller 등은 λͺ¨λ‘ @Component의 νŠΉν™”λœ λ²„μ „μž…λ‹ˆλ‹€. μ—­ν• λ³„λ‘œ κ΅¬λΆ„ν•˜κΈ° μ’‹κ²Œ λ„μ™€μ€λ‹ˆλ‹€.

βœ… 3. μ»΄ν¬λ„ŒνŠΈλŠ” μ–Έμ œ μ‚¬μš©ν•˜λ‚˜μš”?

  • 일반적인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜직 클래슀λ₯Ό Bean으둜 λ“±λ‘ν•˜κ³  싢을 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
  • μžλ™ 등둝이 κ°€λŠ₯ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.(Spring이 직접 생성할 수 μžˆλŠ” 클래슀)
  • μ£Όμš” 사둀:
      1. μ„œλΉ„μŠ€ 클래슀(@Service) : λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 λ‹΄λ‹Ή
      1. 리포지토리 클래슀(@Repository) : DB μ ‘κ·Ό λ‹΄λ‹Ή
      1. 컨트둀러 클래슀(@Controller, @RestController) : API/ν™”λ©΄ λ‹΄λ‹Ή
    • μœ„ μ• λ…Έν…Œμ΄μ…˜λ“€μ€ λͺ¨λ‘ λ‚΄λΆ€μ μœΌλ‘œ @Componentλ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ–΄μ„œ μžλ™ λ“±λ‘λ©λ‹ˆλ‹€.

πŸ“Œ μš”μ•½

질문 μš”μ•½ λ‹΅λ³€
μ»΄ν¬λ„ŒνŠΈλž€? Spring이 μžλ™μœΌλ‘œ Bean으둜 λ“±λ‘ν•˜λŠ” 클래슀
역할은? 객체λ₯Ό μžλ™ 생성 및 κ΄€λ¦¬ν•˜κ³  DIλ₯Ό 지원
μ–Έμ œ μ‚¬μš©ν•˜λ‚˜μš”? μ„œλΉ„μŠ€, 리포지토리, 컨트둀러 λ“± μžλ™ 등둝 κ°€λŠ₯ν•œ 클래슀일 λ•Œ

πŸ™Œ μΆ”κ°€λ‘œ μ•Œμ•„λ‘λ©΄ 쒋은 점

  • @ComponentλŠ” μžλ™ 등둝, @Bean은 μˆ˜λ™ λ“±λ‘μ΄λΌλŠ” 차이가 μžˆμŠ΅λ‹ˆλ‹€.
  • μžλ™ 등둝이 λΆˆκ°€λŠ₯ν•œ μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ λ³΅μž‘ν•œ 생성 둜직이 있으면 @Bean을 μ“°κ³ , 일반적인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 클래슀라면 @Componentλ₯Ό μ“°λŠ” 것이 κΈ°λ³Έμž…λ‹ˆλ‹€.