제어권이 뒤바꼈다
참고:
Inversion of Control Containers and the Dependency Injection pattern
class OwnerController {
private OwnerRepository repository = new OwnerRepository();
}
class OwnerController {
private final OwnerRepository owners;
public OwnerController(OwnerRepository owners) {
this.owners = owners;
}
}
owners를 사용하지만 생성하지는 않는다.
대신, 생성자를 통해 의존성을 주입받고 있는데, 이를 Dependency Injection이라고 한다.
따라서, DI 또한 IoC의 일종이라고 볼 수 있겠다.
class OwnerControllerTest {
@Test
public void create() {
OwnerRepository owners = new OwnerRepository();
OwnerController controller = new OwnerController(owners);
}
}
OwnerController는 위 코드처럼 생성되어 사용된다.
이때, OwnerController의 생성자는 OwnerController(OwnerRepository owners) 하나뿐이므로,
무조건 owners가 주입되어 NullPointerException이 발생할 일은 없게 된다.