라이브러리 | 프레임워크 |
내가 작성한 코드가 직접 제어의 흐름을 담당한다. 특정한 기능을 구현하기 위해서만 사용 가능하고 구조에 영향을 미치지 않는다. 내가 코드로 직접 호출, bcript, chartjs 등 |
특정 라이프사이클 안에서 내가 작성한 코드를 내가 제어권을 가지는 것이 아니고 프레임워크가 대신 제어하고 실행한다. 프레임워크가 구조와 라이프사이클을 정의한다. |
정적 객체 인스턴스 의존 관계
애플리케이션을 실행하지 않아도 객체의 참조 연결을 알 수 있는 구조
쉽게 말해서 비즈니스 로직에서 필요로 하는 객체 관계들을 말한다.
Interface - InterfaceImpl
serviceImpl - Repository(Interface)
동적 객체 인스턴스 의존 관계
애플리케이션 실행 시점 (런타임 시)에만 객체의 참조 연결을 알 수 있는 구조
런타임에 외부에서 실제 구현 객체를 생성하고 클라이언트(실행자)에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라고 한다.
객체 인스턴스를 생성하고 그 참조값을 전달해서 연결된다.
클라이언트 코드를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경 가능
정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다.
AppConfig (Ioc, DI, 스프링 컨테이너), @Configuration에서 정의하는 객체 관계를 말한다.
이걸 의존관계 주입(DI)라고 한다.
클라이언트 - 주문서비스 구현체
ㄴ 메모리 회원 저장소(어떤 저장소인지 모른다.)
ㄴ 정액 할인 정책 (어떤 할인정책인지 모른다.)
'spring' 카테고리의 다른 글
@AutoConfig, @ComponentScan, @Autowired, Filter (0) | 2024.05.28 |
---|---|
Spring Container의 생성 과정 (0) | 2024.05.23 |
Spring Framework, 객체지향, SOLID (0) | 2024.05.20 |
AOP (0) | 2024.05.19 |
Spring boot의 컨텐츠 rendering 동작 과정, 컴포넌트 스캔, 자동의존관계 설정 (0) | 2024.05.15 |