[Spring Framework 특성 살피기] IoC에 대한 이해

2021. 8. 2. 17:23컴퓨터과학

728x90
반응형

[Spring Framework 특성 살피기] IoC에 대한 이해

IoC(Inversion Of Control) : 의존성을 직접 만드는게 아니라 외부의 누군가가 만들어준다.

 

case1 : 직접 의존성을 제어(직접 의존성을 만든다)

- [OwnerController]스스로가 사용할

  [OwnerRepository]와의존성에 대한

  제어권 갖고 직접 만들어 사용한다.

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

 

 

case2 : 의존성 제어권을 위임 = 제어권의 역전(IoC) (외부에서 의존성을 만들어준다)

- 다른 존재[OwnerControllerTest]에게

  [OwnerRepository]과의 의존성에 대한

  제어권을 위임하고, 의존성을 만들게 한다.

 

  Dependency Injection(의존성 주입)

  제어권을 갖는 외부의 존재[OwnerControllerTest]

  [OwnerController]에게 의존성을 주입해 주는 것이다.

class OwnerController{
     private OwnerRepository repo;

     public OwnerController(OwnerRepository repo){
         this.repo=repo;
         }
     }

class OwnerControllerTest{
     @Test
     public void create(){
         OwnerRepository repo = new OwnerRepository();
         //OwnerRepository를 만들어서

         OwnerController controller = new OwnerController(repo);
         //Controller에 주입하여 의존성을 확보
     }
}

 

[스프링에서 의존성 주입받는 방법]

ex) PetRepository 클래스를 주입받는 방법.

1. Autowired

class OwnerController{
     @Autowired
     private PetRepository petRepository;
     }

 

2. 생성자 + 파라미터로 주입

class OwnerController{
     private final PetRepository petRepository;

     public OwnerController(OwnerRepository clinicService, PetRepository petRepository){....
         }
     }

 

3. 생성자 + Setter Autowired

class OwnerController{
     private final PetRepository petRepository;

     @Autowired
     public void setPetRepository(PetRepository petRepository){....
         }
     }

 

 

 

// 참고 : https://www.youtube.com/watch?v=NZ_lPFvu9oU //

728x90
반응형