예제로 배우는 스프링 프레임워크 입문 - IOC

예제로 배우는 스프링 프레임워크 입문 - IOC

Inversion of Control

제어권이 뒤바꼈다고?

일반적인 (의존성에 대한) 제어권: “내가 사용할 의존성은 내가 만든다.”

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

IoC: “내가 사용할 의존성을 누군가 알아서 주겠지”

내가 사용할 의존성의 타입(또는 인터페이스)만 맞으면 어떤거든 상관없다.

그래야 내 코드 테스트 하기도 편하지.

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); } }

Reference

내용정리

Dependency Injection(의존성 주입)

어떤 Instance를 생성할 때 필요한 객체등을 주입하는 것을 의존성 주입이라 하는데

통상적으로는 내부에서 생성하여 주입하게 된다. ex) 생성자, setter, field 등

IOC(Inversion of Control)

DI를 개발자가 신경써서 해왔다면 IOC는 SpringFramework의 힘을 빌려 DI등의 관리에서 벗어나게 해준다.

SpringFramework의 IOC Container에서 어노테이션 등을 지표로 객체 생성에 필요한 관리를 맡아서 해준다.

https://github.com/devjun63/spring-petclinic/commit/c43cc8077a7eabc11743a89a1a1b894f736542db

from http://devjun.tistory.com/233 by ccl(A) rewrite - 2021-11-24 00:02:02