빈 생명주기와 스코프

빈 생명주기란

Pasted image 20260513162746.png

빈 생명주기 단계는 다음과 같음

  1. 스프링 컨테이너가 빈을 생성
  2. 의존관계 주입
  3. 초기화 작업을 수행
  4. 빈을 사용
  5. 컨테이너 종료 시 소멸 작업을 수행 (singleton 빈인 경우)

생명주기 콜백

@PostConstruct와 @PreDestroy

@Component
public class NetworkClient {

    @PostConstruct
    public void init() {
        System.out.println("초기화 작업 수행");
    }

    @PreDestroy
    public void close() {
        System.out.println("연결 종료");
    }
}

InitializingBean과 DisposableBean

@Component
public class NetworkClient implements InitializingBean, DisposableBean {

    @Override
    public void afterPropertiesSet() {
        System.out.println("초기화 작업 수행");
    }

    @Override
    public void destroy() {
        System.out.println("연결 종료");
    }
}

빈 스코프

싱글톤

프로토타입

웹 스코프

@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public RequestTracker requestTracker() {
    return new RequestTracker();
}

scoped proxy: 생명주기가 다른 빈을 singleton 빈에서 사용할 수 있도록 중간에서 호출을 대신 처리하는 프록시 객체

댓글