Spring - petclinic(2)

cook1eee·2021년 7월 21일
0

petclinic

목록 보기
2/6

IoC (Inversion of Control)

	- 제어권이 역전
    

의존성???

- 의존은 변경에 의해 영향을 받는 관계를 의미한다.
- 한 클래스가 다른 클래스의 메서드를 실행할 때 이를 '의존한다'라고 한다.
- A가 B를 사용해야만 A의 역할을 수행할 수 있는 경우
class CarController{
    private final CarService carService;
    private final Cars cars;
  
    private void initCars(){
    	cars = carService.init();
    }
}

CarController는 CarService에 의존한다. CarService의 init메소드가 제거되거나, 이름이 변경되거나 리턴 타입이 바뀌는 등의 변경이 일어나면 CarController는 영향을 받는다.

'변경에 의해 영향을 받는 관계', 의존한다는 것은 변경에 유연하지 못함을 의미

ecsimsw.tistory.com

일반적인 제어권

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

OwnerController가 직접 생성하고 관리함

IOC: 내가 사용할 의존성을 누군가 알아서 준다

    - 내가 사용할 의존성의 타입만 맞으면 상관x
    - 코드 테스트 하기 편함
class OwnerController{
    private OwnerRepository repo;

    public OwnerController(OwnerRepository repo){
        this.repo = repo;
    }
    //repo를 사용합니다
}
class OwnerControllerTest{
    @Test
    public void create(){
        OwnerRepository repo = new OwnerRepository();
        OwnerController controller = new OwnerController(repo);
    }
}

OwnerRepository를 사용은 하지만 객체를 생성은 하지 않음
외부에서 생성자를 통해 받아 온다

DI(Dependency Injection) 의존성 주입

IoC는 넓은 범위의 용어
객체 생명 관리, 흐름 제어를 제 3자에게 위임하는 프로그래밍 모델

DI는 의존성을 주입하는 명확한 용어
스프링이 제공하는 IoC의 방식의 핵심을 짚어주는 의존관계 주입

이게 맞나?????

의존성 주입 테스트

sample/SampleController
sample/SampleRepository


추가

intellij 에서 테스트와 소스창 바꾸는 단축키 Ctrl+Shift+T

0개의 댓글