Open hyunjungkimm opened 6 months ago
orderServiceImpl 코드를 변경해야 한다.
객체의 생성과 연결하는 역할(구성영역 - AppConfig)과 실행하는 역할(사용영역)의 명확한 분리
의존관계를 외부에서 주입해주는 것 같다고 해서 DI(Dependency Injection) - 의존관계 주입, 의존성 주입. DIP - 의존 관계 역전 원칙
프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것
스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록
애플리케이션은 크게 업무 로직과 기술 지원 로직으로 나눌 수 있음
빈이 존재할 수 있는 범위
스프링 컨테이너에 요청
ObjectProvider
JSR-330 Provider
웹 환경에서만 동작하고, 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출됨.
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
스프링부트
스프링의 핵심
객체 지향
특징
1. 추상화
2. 캡슐화
3. 상속
4. 다형성
역할과 구현을 분리
자바 - 역할과 구현을 분리
객체의 협력이라는 관계
한계
객체 지향 프로그래밍
스프링과 객체 지향
좋은 객체 지향 설계의 5가지 원칙 (SOLID)
SRP : 단일 책임 원칙(Single responsibility principle)
OCP : 개방-폐쇄 원칙(Open/closed principle)
LSP : 리스코프 치환 원칙(Liskov substitution principle)
ISP : 인터페이스 분리 원칙(Interface segregation principle)
DIP : 의존관계 역전 원칙(Dependency inversion principle)
결론
Spring DI