본문 바로가기
spring

라이브러리 vs 프레임워크, 정 동적 객체 인스턴스 의존 관계

by 김선지 2024. 5. 23.

 

 

라이브러리 프레임워크
내가 작성한 코드가 직접 제어의 흐름을 담당한다.
특정한 기능을 구현하기 위해서만 사용 가능하고 구조에 영향을 미치지 않는다.

내가 코드로 직접 호출,
bcript, chartjs 등
특정 라이프사이클 안에서 내가 작성한 코드를 내가 제어권을 가지는 것이 아니고 프레임워크가 대신 제어하고 실행한다.

프레임워크가 구조와 라이프사이클을 정의한다.

 

 

정적 객체 인스턴스 의존 관계

애플리케이션을 실행하지 않아도 객체의 참조 연결을 알 수 있는 구조

쉽게 말해서 비즈니스 로직에서 필요로 하는 객체 관계들을 말한다.

Interface - InterfaceImpl

serviceImpl - Repository(Interface)

 

동적 객체 인스턴스 의존 관계

 

애플리케이션 실행 시점 (런타임 시)에만 객체의 참조 연결을 알 수 있는 구조

런타임에 외부에서 실제 구현 객체를 생성하고 클라이언트(실행자)에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라고 한다.

 

객체 인스턴스를 생성하고 그 참조값을 전달해서 연결된다.

클라이언트 코드를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경 가능

정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다.

 

AppConfig (Ioc, DI, 스프링 컨테이너), @Configuration에서 정의하는 객체 관계를 말한다.

이걸 의존관계 주입(DI)라고 한다.

 

클라이언트 - 주문서비스 구현체 

                                                ㄴ 메모리 회원 저장소(어떤 저장소인지 모른다.)

                                                ㄴ 정액 할인 정책 (어떤 할인정책인지 모른다.)