@Bean

Yuno·2024년 8월 14일
0

Spring Framework 에서 자바 기반의 설정을 통해 Bean 을 정의하는 데 사용됨.
이 어노테이션을 사용하면 메서드를 통해 Spring IoC 컨테이너에 Bean을 등록할 수 있음


🫛 @Bean 어노테이션

📌 역할

  1. 빈 등록
  • @Bean 어노테이션이 붙은 메서드는 Spring 컨테이너에 의해 호출되며 반환된 객체를 빈으로 등록.
    이 빈은 컨테이너에 의해 관리되며, 다른 빈이나 컴포넌트에서 주입될 수 있음.
  1. 빈 정의
  • 이 어노테이션은 자바 코드로 빈을 정의할 수 있게 해주며, XML 파일이나 어노테이션 기반의 설정 방법과 함께 사용됨

@Bean 어노테이션을 사용하여 두 개의 빈을 정의하는 예시

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

@Configuration
public class AppConfig {
	
    @Bean
    public MyService myService() {
    	return new MyService();
    }
    
    @Bean
    public AnotherService anotherService() {
    	return new AnotherService();
    }
}
  • @Configuration 클래스 AppConfig 내에 @Bean 메서드를 사용하여 MyServiceAnotherService 두 개의 빈을 정의
  • myService() 메서드는 MyService 객체를 반환하며, 이 객체는 Spring IoC 컨테이너에 의해 관리됨
  • anotherService() 메서드는 AnotherService 객체를 반환하며, 역시 Spring IoC 컨테이너에 의해 관리됨

❗️ 주요 포인트

  1. 빈의 이름
  • 기본적으로, @Bean 어노테이션이 붙은 메서드의 이름이 빈의 이름이 됨.
    예를들어, myService 메서드에서 반환된 빈은 myService 라는 이름으로 컨테이너에 등록됨
  1. 싱글턴 빈
  • 기본적으로 @Bean 메서드로 생성된 빈은 싱글턴임. 즉, 애플리케이션 컨텍스트 내에서 한 번만 생성되며, 모든 요청에서 동일한 인스턴스가 제공. 싱글턴이 아닌 빈이 필요하다면, @Scope 어노테이션을 사용할 수 있음
  1. 빈의 의존성
  • @Bean 메서드는 다른 빈에 대한 의존성을 주입받을 수 있음. 메서드 매개변수로 다른 빈을 주입받으면, Spring 은 이 빈을 자동으로 주입
@Bean
public MyService myService(AnotherService anotherService) {
	return new MyService(anotherService);
}
  1. 설정 메서드의 반환 타입
  • @Bean 메서드는 빈으로 등록할 객체를 반한해야 함. 반환 타입은 객체의 타입에 따라 결정됨
  1. 컨테이너 관리
  • @Bean 으로 등록된 빈은 Spring의 IoC 컨테이너에 의해 생성되고 관리되며, 다른 빈과의 의존성 주입이나 라이프사이클 관리를 제공받음
profile
Hello World

0개의 댓글