본문 바로가기
Java

[Java] 스프링 IoC(Inversion of Control) 컨테이너 / 제어의 역행

by 애리몽 2021. 4. 9.
반응형

컨테이너

 컨테이너는 자신이 관리할 클래스들이 등록된 XML 설정 파일을 로딩하여 구동한다. 그리고 클라이언트의 요청이 들어오는 순간 XML설정 파일을 참조하여 객체를 생성하고, 객체의 생명주기를 관리한다. 스프링 컨테이너 역시 서블릿 컨테이너와 유사하게 동작한다.

 

*서블릿 컨테이너 동작 순서🔗*

/WEB-INF/web.xml

<web-app>
	<servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>hello.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    	<servlet-name>hello</servlet-name>
        <url-pattern>/hello.do</url-pattern>
    </servlet-mapping>
</web-app>

1) WEB-INF/web.xml 파일을 로딩하여 구동

2) 브라우저로부터 /Hello.do 요청 수신

3) hello.HelloServlet 클래스를 찾아 객체를 생성하고 doGet() 메소드 호출

4) doGet() 메소드 실행 결과를 클라이언트 브라우저로 전송

 

제어의 역행

 결합도와 관련된 개념으로 이해할 수 있다. 기존에 자바 기반으로 애플리케이션을 개발할 때, 객체를 생성하고 객체들 사이의 의존관계를 처리하는 것에 대한 책임은 전적으로 개발자에게 있었다. 즉, 개발자가 어떤 객체를 생성할지 판단하고 객체 간의 의존관계 역시 소스코드로 표현해야 했다.

 

 하지만 제어의 역행이라는 것을 이런 일련의 작업들을 소스코드로 처리하지 않고 컨테이너로 처리하는 것을 의미한다. 따라서 제어의 역행을 이용하면 소스에서 객체 생성과 의존관계에 대한 코드가 사라져 결과적으로 낮은 결합도의 컴포넌트를 구현할 수 있게 한다.

 

 

 

 

 

 

출처: 스프링 퀵 스타트 (저:채규태)

반응형