IoC 컨테이너란 무엇일까

이동욱

2021/03/24

Categories: 프로그래밍 - 자바 Tags: 스프링

스프링 전반적인 기술을 주제로 사내 세미나를 하였다. 따라서 이를 공식 문서를 보면서 복습하면서 다시 정리해보았다.

Screen Shot 2021-03-24 at 6 18 09 PM

스프링 IoC 컨테이너 및 빈(Bean)


Screen Shot 2021-03-24 at 6 26 06 PM

ApplicationContextInterface

위와 같은 그림으로 이해하면 이해하기 편하다.

컨테이너 개요


Screen Shot 2021-03-24 at 6 46 34 PM

container-magic

빈의 스코프와 라이프 사이클(Bean Scope and LifeCycle)


Screen Shot 2021-03-24 at 7 10 07 PM

Screen Shot 2021-03-24 at 7 17 00 PM

위의 표는 빈의 정의를 나타내고 속성은 다음과 같다.

Screen Shot 2021-03-24 at 7 31 54 PM

빈의 생명 주기 콜백(Lifecycle Callbacks)


Screen Shot 2021-03-25 at 8 41 23 AM

JSR-250 스펙에서는 @PostConstruct, @PreDestory 어노테이션을 사용하는데, 일반적으로 최신 스프링 애플리케이션에서 생명 주기 콜백을 수신하기 위한 좋은 방법이다. 어노테이션을 사용한다는 것은 스프링이 특정 인터페이스에 결합되지 않는다는 것을 의미한다.

Screen Shot 2021-03-25 at 8 54 29 AM

public class AnotherExampleBean implements InitializingBean {

    @Override
    public void afterPropertiesSet() {
        // do some initialization work
    }
}

여러 가지 방법으로 구현할 수 있지만, 인터페이스 방법은 권장하지 않는 방법이다.

Screen Shot 2021-03-25 at 9 00 11 AM

org.springframework.beans.factory.DisposableBean 인터페이스를 구현하면 이를 포함하는 컨테이너가 소멸될 때, Bean이 콜백을 받을 수 있다.

public class AnotherExampleBean implements DisposableBean {

    @Override
    public void destroy() {
        // do some destruction work (like releasing pooled connections)
    }
}

Screen Shot 2021-03-25 at 9 19 57 AM

그렇다면 InitializingBean과 DisposableBean 인터페이스를 구현하는 것과 @PostConstruct, @PreDestory를 사용하는 것의 차이점은 무엇일까?

참고 문헌

>> Home