221202 Inversion of Control

Jongleee·2022년 12월 2일
0

TIL

목록 보기
119/737

Inversion of Control

자바에서 객체를 생성

class OwnerController {
   private OwnerRepository repository = new OwnerRepository();
}

->직접 의존성을 만들어서 사용하며 의존성의 제어는 해당 클래스에 있음

스프링 - 제어의 역전

제어의 역전
직접 의존성을 생성하지 않고 주입받음.

class OwnerController {
   private OwnerRepository repo;

// 객체를 사용하는 생성자에서 parameter 로 Repository 를 받는다.
   public OwnerController(OwnerRepository repo) {
       this.repo = repo;
   } 

}

// Test Class 에서의 사용 예시
class OwnerControllerTest {
   @Test
   public void create() {
   // 생성된 객체를 parameter 로 넘겨준다.
   // 해당 repository 를 사용하는 OwnerController 가 직접 Repository 객체를 생성해서 사용하지 않는다.
         OwnerRepository repo = new OwnerRepository();
         OwnerController controller = new OwnerController(repo);
   }
}

객체를 사용하는 class 내부의 생성자에서 해당 객체를 생성하지 않고 주입받아 사용한다.
이것을 DI(Dependency Injection) 이라고 한다. (의존성 주입)

장점

객체지향적으로 Single Responsibility Principle을 지킬 수 있게 됨
의존관계를 선택하는 책임에서 벗어나 다른 클래스가 수정되어도 해당 클래스에는 영향이 없음

0개의 댓글