본문 바로가기
프로그래밍/코프링

코프링, 스프링 @Bean 어노테이션(Annotations)

by K-인사이터 2024. 3. 7.
반응형

안녕하세요 

K-IN 입니다. 

 

@Bean 어노테이션

Bean 어노테이션은 스프링 프레임워크에서 빈(Bean) 객체를 정의하는데 사용됩니다.

 

빈(bean)은 스프링 애플리케이션 컨텍스트에 등록되어 관리되는 객체이며 다음과 같은 기능을 제공합니다.

  1. 의존성 주입(Dependency Injection) 과 IoC 컨테이너 활용: Bean 어노테이션을 활용하면 스프링 IoC 컨테이너가 빈(Bean)을 인식하고 ✅ 객체 간의 의존성 주입을 자동으로 처리합니다.
  2. 빈의 라이프사이클 관리: 스프링은 Bean 어노테이션이 붙은 메서드의 라이프사이클을 관리하며 초기화 메소드나 소멸 메소드를 정의하여 빈의 라이프사이클 이벤트에 특정 동작을 수행할 수 있도록 합니다.
  3. Bean 어노테이션은 XML 기반의 설정 대신 코드 기반의 설정을 선호할 경우 유용합니다. 코드를 통해 명시적으로 스프링 빈(Bean)을 정의할 수 있도록 합니다.

아래의 예시는 빈(Bean)을 스프링 컨테이너에 등록하고 필요한 의존성을 스프링이 자동으로 주입해주는 메커니즘을 설명합니다.

 

IoC 컨테이너는 myService 메소드와 myController 메소드를 빈(Bean)으로 인식합니다.

 

  • myController 메소드는 MyService 를 사용하고 있습니다.
  • IoC 컨테이너는 MyService 가 필요한 것을 파악하고 자동으로 해당 의존성을 주입합니다.

이러한 의존성 주입을 통해 실제로 인자를 제공하지 않으나 코드가 동작하는 Spring 소스코드에 관한 궁금증이 풀렸습니다. 

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration
class AppConfig {

    @Bean
    fun myService(): MyService {
        return MyService()
    }

    @Bean
    fun myController(myService: MyService): MyController {
        return MyController(myService)
    }
}

class MyService {
    // MyService의 구현
}

class MyController(private val myService: MyService) {
    // MyController의 구현
}

 

이상입니다.

K-IN 올림. 

반응형