IoC, DI는 객체지향의 SOLID 원칙 그리고 GoF 의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴
강하게 결합되어 있는 Consumer 와 Chicken
코드는 정상적으로 작동하겠지만, Consumer 가 chicken 이 아니라 pizza 가 먹고싶다면 코드 수정이 불가피함
약하게 결합되어있는 Consumer 와 Chicken, Pizza
interface 다형성의 원리를 사용해서 고객이 어떤 음식을 요구하더라도 쉽게 대처할 수 있음.
그럼 여기에 어떻게 주입할까?
1. 필드에 직접 주입
2. 메서드를 통한 주입
3. 생성자를 통한 주입
필드에 직접 주입
Food를 Consumer에 포함 시키고 Food에 필요한 객체를 주입받아 사용
메서드를 통한 주입
set 메서드를 사용하여 필요한 객체를 주입받아 사용
생성자를 통한 주입
생성자를 사용하여 필요한 객체를 주입받아 사용
이전에 강한 결합에서는 Consumer → Food 로 제어의 흐름이 이어졌는데, 이를 해결하기 위해서 Food 를 Consumer 에게 전달해주는 식으로 변경함으로써, Consumer 은 추가적인 코드 수정 없이 어느 Food 가 들어오든 전부 처리할 수 있게 되었다.
결과적으로 제어의 흐름이 Food → Consumer 로 역전되었다고 볼 수 있다.
'컴퓨터 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] Spring, Spring MVC, Spring 3 Layer (0) | 2024.08.19 |
---|---|
[Spring] Ioc Container 와 Bean (0) | 2024.08.19 |
[Spring] CRUD (0) | 2024.08.13 |
[Spring] PathVariable, RequestParam, ModelAttribute, RequestBody (0) | 2024.08.13 |
[Spring] 데이터를 Client 에 반환, Jackson 라이브러리 (0) | 2024.08.12 |