DI, IoC

Lee·2023년 8월 1일

DI

객체 간 의존관계가 있는 경우 객체 내부에서 의존관계를 관리하는 것이 아닌 외부에서 의존 객체를 주입하는 것을 의미한다.

// Service1 내부에 new 키워드를 사용해 의존성 생성
// 강한 결합을 통해 Repository에 변경에 Service1이 민감하다.
public class Service1 {
	private Repository repo = new Repository();
}

// Service2 외부에서 Repository를 주입받아 의존관계 형성
// 내부에서 의존관계를 정의하지 않기 때문에 객체 간 결합도가 낮으며
// Repository의 변화에 대해 상대적으로 덜 민감하다.
public class Service2 {
	private final Repository repo;
    
    public Service2(Repository repo) {
    	this.repo = repo;
    }
}

IOC

객체의 생명주기 권한 등의 제어를 개발자가 아닌 외부에 위임하는 것을 나타낸다.
대표적으로 프레임워크가 객체의 제어 권한을 가져간다.

스프링을 예시로 들면 Bean 컨테이너에 있는 객체에 한하여 의존성 주입, 생명주기 등을 관리한다.

profile
발전하고 싶은 백엔드 개발자

0개의 댓글