learn/spring

빈 (Bean)

사겅이 2023. 9. 21. 02:54

빈 (Bean)

Spring에서 애플리케이션의 핵심을 이루고 Spring IoC 컨테이너에 의해 관리되는 객체를 빈(Bean)이라 함. 빈은 Spring IoC 컨테이너에 의해 인스턴스화되고 조립되며 관리되는 객체임.

In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container.

 

Java 클래스를 Bean으로 선언하기 위해 @Component, @Service, @Repository와 같은 어노테이션을 사용

public class MyBean {
    public void sayHello() {
        System.out.println("Hello, Spring IoC 컨테이너!");
    }
}

 

생명주기(Life Cycle)

출처 : https://dahye-jeong.gitbook.io/spring/spring/2021-05-17-bean-lifecycle

 

  1. 빈 인스턴스화(Instantiation):
    • 스프링 컨테이너는 빈을 생성하기 위해 해당 클래스의 인스턴스를 만듭니다.
    • 기본적으로는 클래스의 기본 생성자를 사용하여 인스턴스를 생성합니다.
  2. 의존성 주입(Dependency Injection):
    • 스프링은 의존성 주입(DI)을 통해 빈에 필요한 의존 객체들을 주입합니다.
    • @Autowired, @Inject, @Resource 등의 어노테이션을 사용하거나 XML 설정 파일에서 명시적으로 의존성 관계를 설정할 수 있습니다.
  3. 초기화(Initialization):
    • 빈이 생성되고, 의존성 주입이 완료된 후에 초기화 메서드가 호출됩니다.
    • 초기화 메서드는 @PostConstruct 어노테이션으로 지정하거나, InitializingBean 인터페이스를 구현하거나, XML 설정 파일에서 <init-method>로 지정할 수 있습니다.
  4. 사용:
    • 초기화가 완료된 빈은 스프링 컨테이너에서 사용될 준비가 되었습니다.
    • 애플리케이션 코드에서 해당 빈을 호출하고 사용할 수 있습니다.
  5. 소멸(Destruction):
    • 스프링 컨테이너가 종료되거나, 개별적인 빈에 대해 소멸 메서드 호출 시점을 정의할 수 있습니다.
    • 소멸 메서드는 @PreDestroy 어노테이션으로 지정하거나, DisposableBean 인터페이스를 구현하거나, XML 설정 파일에서 <destroy-method>로 지정할 수 있습니다.
  6. 싱글톤 범위(Singleton Scope):
    • 스프링 프레임워크의 기본 범위(scope)는 싱글톤입니다.
    • 싱글톤 범위로 정의된 빈은 애플리케이션 전체에서 하나의 공유 인스턴스만 존재합니다.
  7. 프로토타입 범위(Prototype Scope):
    • 프로토타입 범위로 정의된 빈은 요청 시 마다 새로운 인스턴스가 생성됩니다.
    • 매번 새로운 객체가 필요한 경우에 유용합니다.

출처 :&nbsp;https://surhommejk.tistory.com/340