본문 바로가기

강의/토비의 스프링부트

Dependency injection

 

HelloController가 소스코드 레벨에서는 특정 클래스에 의존하지 않으나 (interface)

Runtime이 되면 hellocontroller는 구현체를 이용해야 되기 때문에, 둘사이의 연관관계를 만들어 주긴 해야한다.

이 작업을 DI(Dependency injection)이라고 한다.

 

DI는 제 3의 존재를 필요로 한다.

우리가 이것을 Assembler라고 부른다.

HelloController는 HelloService 구현한 클래스에 의존해야하나 소스코드레벨에서는 의존하고 싶지 않다.

SimpleHelloService에서 ComplexHelloService로 바꿨다고 해서 소스코드를 고치고 싶지는 않다.

 

Hellocontroller가 사용하는 오브젝트를 new로 만들지 않고

외부에서 그 오브젝트를 만들어서 HelloController가 사용할 수 있도록 주입해줘야 한다.

그 작업을 해주는 것을 Assembler라고 부른다.

 

이 Assembler를 우리는 Spring Container라고 부르는 것이다.

Spring container가 하는 역할이 메타 정보를 주면 

클래스의 싱글톤 오브젝트를 만들 뿐만 아니라

오브젝트가 사용할 다른 의존 오브젝트가 있다면 그 오브젝트를 주입하는 작업까지 해주는 것이다.

 

'강의 > 토비의 스프링부트' 카테고리의 다른 글

자바코드 구성 정보 사용  (0) 2023.02.21
di 적용  (0) 2023.02.20
프론트 컨트롤러 // 스프링 컨테이너  (0) 2023.02.20
dsf  (0) 2023.02.19
토비의 스프링부트  (0) 2023.02.19