IOC와 DI

2020. 3. 27. 17:52기타

컨테이너란

컨테이너는 보통 객체의 생명주기를 관리하며, 생성된 객체들에게 추가적인 기능을 제공하도록 하는 것을 의미합니다. 다시 말해, 컨테이너란 개발자가 작성한 코드의 처리과정을 위임받은 독립적인 존재입니다. 컨테이너는 적절한 설정만 되어 있다면 개발자가 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 제어합니다.

IOC란

일반적인 프로그래밍은 main메소드에서 시작해서 개발자가 미리 정한 순서를 따라 객체가 생성되고 실행됩니다. 그러나 서블릿의 경우를 보면, 개발자가 서블릿을 개발해서 서버에 배포할 수는 있지만 직접 제어할 수 있는 방법은 없습니다. 대신 서블릿에 대한 제어 권한을 가진 컨테이너가 적절한 시점에 서블릿 클래스의 객체를 만들고 그 안의 메소드를 호출합니다. 이처럼 개발자가 만든 코드의 최종 호출이 개발자에 의해 제어되는 것이 아니라 컨테이너에 의해 결정되는 현상을 제어의 역전(IOC)라고 합니다.

DI란

DI는 의존성 주입이라는 말입니다. 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라, 특정 객체에 필요한 객체를 외부에서 결정해서 연결시키는 것을 의미합니다. Java에서는 일반적으로 Interface를 이용해서 의존적인 객체의 관계를 최대한 유연하게 처리할 수 있게 합니다. 즉, 개발자는 클래스의 기능을 추상적으로 묶어둔 인터페이스를 이용하면 나머지는 스프링에서 객체를 주입해줍니다. 따라서 이러한 의존성 주입으로 인해 모듈 간의 결합도가 낮아지고 유연성이 높아집니다.

728x90

'기타' 카테고리의 다른 글

예외 처리  (0) 2020.04.25
API  (0) 2020.04.22
QueryString과 Path Variable은 각각 언제 사용하는가  (0) 2020.04.09
반응형 웹  (0) 2020.03.29
float 을 사용하여 <div> 태그를 가로로 정렬하는 방법  (0) 2020.03.29