etclinic(2)
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는 영향을 받는다.
'변경에 의해 영향을 받는 관계', 의존한다는 것은 변경에 유연하지 못함을 의미
일반적인 제어권
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) 의존성 주입
- 제어권이 역전
- 의존은 변경에 의해 영향을 받는 관계를 의미한다.
- 한 클래스가 다른 클래스의 메서드를 실행할 때 이를 '의존한다'라고 한다.
- A가 B를 사용해야만 A의 역할을 수행할 수 있는 경우
class CarController{
private final CarService carService;
private final Cars cars;
private void initCars(){
cars = carService.init();
}
}
CarController는 CarService에 의존한다. CarService의 init메소드가 제거되거나, 이름이 변경되거나 리턴 타입이 바뀌는 등의 변경이 일어나면 CarController는 영향을 받는다.
'변경에 의해 영향을 받는 관계', 의존한다는 것은 변경에 유연하지 못함을 의미
일반적인 제어권
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를 사용은 하지만 객체를 생성은 하지 않음
외부에서 생성자를 통해 받아 온다
IoC는 넓은 범위의 용어
객체 생명 관리, 흐름 제어를 제 3자에게 위임하는 프로그래밍 모델
DI는 의존성을 주입하는 명확한 용어
스프링이 제공하는 IoC의 방식의 핵심을 짚어주는 의존관계 주입
이게 맞나?????
의존성 주입 테스트
sample/SampleController
sample/SampleRepository
추가
intellij 에서 테스트와 소스창 바꾸는 단축키 Ctrl+Shift+T
Author And Source
이 문제에 관하여(etclinic(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@kahtyi/Spring-petclinic2
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
intellij 에서 테스트와 소스창 바꾸는 단축키 Ctrl+Shift+T
Author And Source
이 문제에 관하여(etclinic(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kahtyi/Spring-petclinic2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)