Dependency Injection ( Spring IoC/DI Container )

HelloController → SimpleHelloService

이때 생길 수 있는 문제점

image.png

다른 oooHelloService를 만들고 싶거나 다른 곳에서 oooHelloService 클래스를 가지고 왔을 때 적용을 하려면

HelloController의 코드를 수정해야 됨(코드 수정, 컴파일, 배포 등의 작업이 필요)

문제점 해결 : DI 적용

HelloController는 HelloService라는 sayHello 메서드를 가지고 있는 HelloService 인터페이스에 의존하도록 만드는 것

image.png

HelloController는 HelloService라는 인터페이스 구현 클래스를 많이 만들어도 HelloController를 수정하지 않아도 됨(특정 클래스에 의존하고 있지 않기 때문)

그러나 소스 코드 레벨에 의존하지 않더라도 실제 런타임에 HelloController는 HelloService 인터페이스를 구현한 어떤 클래스의 오브젝트를 이용해야 됨(어떤 클래스의 오브젝트를 사용할 것인지 결정되어 있어야 됨)

SimpleHelloService를 이용하기로 결정