스프링 사이드 스토리
1. 핵심개념
이 기술은 왜 만들었는가? 이 기술의 핵심 컨셉은?
- 자바 언어 기반의 프레임워크
- 객체 지향 언어를 개발할 수 있도록 도와주는 프레임워크!!
- 좋은 객체 지향 어플리케이션을 개발할 수 있도록 프레임워크
2. 좋은 객제 지향이란?
객제 지향 프로그래밍
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것
각각의 객체는 메세지를 주고받고, 데이터를 처리할 수 있음
객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용됨
다형성(Polymorphism)
- 실세계의 역할과 구현이라는 편리한 컨셉을 다형성을 통해 객체 세상으로 가져올 수 있음
- 확장 가능한 설계
- 클라이언트에 영향을 주지 않는 변경 가능
- 인터페이스를 잘 설계하는 것이 중요
스프링과 객체 지향
다형성이 가장 중요
스프링은 다형성을 극대화해서 이용할 수 있게 도와줌
스프링은 IoC, DI를 이용해 다형성을 활용, 이를 통해 역할과 구현을 편리할 수 있음
좋은 객체 지향 설계의 5가지 원치 (SOLID)
- SRP : 단일 책임 원칙 - 변경이 있을 때 파급효과가 적다면 단일 책임원칙을 잘 따른것!
- OCP : 개방-폐쇄 원칙 - 다형성을 이용, ex) 인터페이스 구현한 새로운 클래스 작성 <- spring Container
- LSP : 리스코프 치환 원칙 - 하위 타입은 상위의 원칙을 지켜야 한다!
- ISP : 인터페이스 분리 원칙 - 분리할 수 있으면 분리하는 것이 좋다!
- DIP : 의존관계 역전 원칙 - 추상화에 의존, 구체화에 의존X!
스프링은...
스프링은 스프링에서 제공하는 기술로 다형성 + OCP, DIP를 가능하게 지원
- DI(Dependency Injection) : 의존관계, 의존성 주입
- DI 컨테이너 제공
클라이언 코드의 변경 없이 기능 확장
쉽게 부품을 교체하듯이 개발