| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Dead Letter Queue
- kafka
- AWS
- Web
- docker
- securitycontextholderfilter
- Spring Data JPA
- DLQ
- DI
- @ComponentScan
- MSA
- 지연 로딩
- Spring
- JPA
- mybatis
- JPQL
- dockerhub
- @Transactional
- 서블릿 컨테이너
- Spring Container
- 컨테이너
- CORS
- redis
- 스프링 부트
- Routing Key
- 쿠버네티스
- JdbcTemplate
- 페이징
- JWT
- docker compose
- Today
- Total
목록Dependency Injection (2)
look-forest
제어의 역전 IoC(Inversion of Control) 프로그래머가 직접 객체 생성, 연결하지 않고 프레임워크가 해준다. 즉, 프레임워크의 라이프 사이클 상에서 이루어진다. 이처럼 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다 스프링의 경우 빈에 대한 제어권을 프로그래머가 아닌 프레임워크가 가져감으로써, OCP, DIP 원칙을 가능케 해준다. [예제]에서, 기존 코드는 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다 그러나 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다 → 프로그램의 제어 흐름은 이제 AppConfig가 가져간다 의존관계 주입 DI(Dependency ..
'좋은 객체 지향'을 예제를 통해 이해해보자. 역할과 구현을 분리하면 자유롭게 구현 객체를 조립할 수 있다 순수 자바 코드로 구현 [문제 X] SRP(단일 책임 원칙) 수행 사례 주문 서비스와 할인 계산의 책임을 분리. 그저 할인액만 받아온다. → 할인 관련 코드 변경 시 OrderService는 안 바꿔도 된다. [문제] DIP, OCP 위반 사례 DIP 위반: OrderServiceImpl이 인터페이스 뿐만 아니라 구현체에도 의존 → 구현체 변경 시 코드 변경도 수반 OCP 위반: 멤버 저장소, 할인 정책을 바꾸는 순간 코드 변경이 수반된다! 어떻게 문제를 해결할 수 있을까? DIP 위반 -> 추상(인터페이스)에만 의존하게 코드를 변경하면 된다 but.. 실제 실행을 해보면 NPE(null point..