- 스프링 프레임워크: 핵심 기술들, 웹 기술, 데이터 접근 기술 등등을 합해서 스프링 프레임워크라고 함
- 스프링 부트: 이걸 사용해서 스프링을 사용함, tomcat 내장해서 웹 서버 설치하지 않아도 괜춘!
- 스프링의 핵심: 객체 지향 언어인 java의 강력한 특징을 살려내는 프레임워크
객체 지향 프로그래밍의 특징
1) 캡슐화: 객체의 필도, 메소드를 하나로 묶고 실제 구현 내용을 감주는 것
2) 상속: 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해줌
3) 다형성: 같은 타입이어도 여러 객체로 다르게 구현함으로써 다양한 기능 이용 가능 ex) 부모 클래스 또는 인터페이스의 타입 변환 허용
좋은 객체 지향 프로그래밍이란?
- 유연하고 변경이 용이, 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법
- '다형성' 이 핵심: 역할 - 구현 // 자동차가 바뀌어도 운전자의 역할이 안 바뀐다
- 역할 = 인터페이스, 상속 클래스 // 구현 = 클래스, 객체
- 객체의 협력
- java는 오버라이딩으로 다형성 실현
- 클라이언트를 변경하지 않고, 서버의 구형 기능을 유연하게 변경 가능
- 인터페이스를 안정적으로 잘 설계하는 것이 중요하다
- 스프링에서의 제어의 역전, 의존관계 주입은 다형성 활용해서 역할/구현 편리하게 다루도록 지원한다
- 다형성만으로는 OCP, DIP 를 지킬 수 없음
좋은 객체 지향 설계의 5가지 원칙(SOLID)
- SRP(단일 책임 원칙): 한 클래스는 하나의 책임만 가져야 함. 변경이 있을 때 파급 효과가 적으면 good.
- OCP(개방-폐쇄 원칙): 확장(인터페이스 구현)에는 열려 있으나 변경(인터페이스, 역할)에는 닫혀 있어야 함. 다형성 이용, 스프링에서는 AppConfig가 의존관계를 FixDiscountPolicy 객체에서 RateDiscountPolicy 객체로 변경해서 코드에 주입하므로 클라이언트 코드는 변경 x
- LSP(리스코프 치환 원칙): 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 함.
ex) 자동차 인터페이스의 엑셀은 앞으로 가려는 기능! 뒤로 가게 구현하면 LSP 위반
- ISP(인터페이스 분리 원칙): 특정 클라이언트를 위한 인터페이스 여러개 >> 인터페이스 하나
- DIP(의존관계 역전 원칙): 추상화에 의존해야지 구체화에 의존하면 안됨. 구현 클래스가 아니라 역할(인터페이스)에 의존하라는 뜻
스프링 설계와 객체 지향 프로그래밍
- DI(의존관계), DI 컨테이너 제공
'개발 > Springboot' 카테고리의 다른 글
[Spring 핵심 원리 기본편] 3. 객체 지향 원리 적용(DI, @BEAN) (0) | 2023.08.05 |
---|---|
[Spring 핵심 원리 기본편] 2. 예제 만들기 (0) | 2023.08.03 |
[Spring] 김영한의 Spring 입문 섹션 7. AOP (0) | 2023.07.22 |
[Spring] 김영한의 Spring 입문 섹션 5. 회원 관리 예제 - 웹 MVC 개발 (0) | 2023.07.16 |
[Spring] 김영한의 Spring 입문 섹션 4. 스프링 빈과 의존관계 (0) | 2023.07.15 |
댓글