강의 소개
인프런 김영한 스프링 완전 정복 시리즈 중 '스프링 핵심 원리 - 기본 편'정리입니다.
자세한 내용을 수강하고 싶으시다면 김영한님 강의 수강을 적극 추천합니다.
1. 스프링이란?
스프링이라는 단어는 문맥에 따라 다르게 사용된다.
1) 스프링 DI 컨테이너 기술 2) 스프링 프레임워크 3) 스프링 생태계 등
스프링 프레임워크
- 스프링의 가장 핵심 기술 (스프링 DI 컨테이너, AOP, 이벤트, 기타)
- 웹 기술 (스프링 MVC, 스프링 WebFlux)
- 데이터 접근 기술: 트랜젝션, JDBC, ORM 지원, XML 지원
스프링 부트
- 스프링의 많은 기능들을 편리하게 사용할 수 있도록 도와준다.
- 최근에는 기본으로 사용한다.
- 톰캣 같은 웹 서버를 내장한다.(별도 설치 X) 지금은 스프링 부트로 빌드, 서버 띄우는 것까지 자체적으로 해준다.
(이전에는 빌드 -> 톰캣서버 별도 설치 -> 톰캣 서버의 특정 위치에다가 빌드된 스프링을 넣어 번거로웠다)
- 쉬운 빌드가 가능하도록 starter 종속성을 제공한다.
(AOP 스타터, DATA JPA 스터터 등등을 깔아야 했던 과거와 달리, 현재는 한 개만 설정하면 나머지 starter 라이브러리도 구성할 수 있도록 편리해졌다)
그밖에
스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드
2. 스프링의 핵심 컨셉
스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크
(스프링은 자바 언어의 핵심인 객체 지향을 강력히 살려낸다)
3. 좋은 객체 지향 프로그래밍
객체지향의 특징
- 추상화
- 캡슐화
- 상속
- 다형성
객체 지향 프로그래밍
- 컴퓨터 프로그램을 여러 개의 독립된 단위인 '객체'들의 모임으로 파악하는 것이다.
- 각각의 객체는 메시지를 주고받으며 데이터를 처리할 수 있다.
- 장점은 유연하고 변경이 용이하다는 것이다. 궁극의 유연하고 변경이 용이하는 것은 바로 '다형성'을 나타낸다.
다형성(Polymorphism)
역할과 구현으로 세상을 구분하는 것이다.
예를 들어 운전자가 자동차 중 아반떼에만 의존하고 있다면 테슬라, K7을 운전하지 못할 것이다.
하지만 운전자가 자동차 역할에만 의존하게 된다면? 차종이 여러 번 바뀌어도 계속 운전할 수 있다.
여기서 운전자는 클라이언트를, 자동차 역할은 인터페이스를, 아반떼 등의 차종은 인터페이스의 구현을 의미한다.
운전자(클라이언트)가 자동차 역할(인터페이스)에 의존하는 경우 장점은 아래와 같다.
- 클라이언트가 자동차의 내부구조를 몰라도 된다
- 구현이 내부적으로 바뀌더라도 클라이언트에게 전혀 영향이 없다
- 차종이 바뀌어도 상관없이 운전할 수 있다.
즉, 클라이언트에게 영향 주지 않고 자동차는 새로운 기능을 제공할 수 있는 것이다.
그래서 역할과 구현으로 구분하면 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
객체 설계 시 역할(인터페이스)을 먼저 부여 후, 그 역할을 수행하는 구현 객체를 만들어야 하는 것이다.
다형성의 본질
인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.
객체는 독립적일 수 없다. 객체의 핵심은 협력이다.
클라이언트 변경 없이, 서버의 구현 기능을 유연히 변경할 수 있다.
스프링과 객체 지향
스프링의 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용하여 역할, 구현을 다룰 수 있게 한다.
스프링을 사용하면 구현을 편리하게 바꿀 수 있다.
SOLID 원칙
객체지향의 핵심은 다형성이지만,
다형성 만으로는 SOLID 원칙 중에서 OCP(개방-폐쇄 원칙), DIP(의존 역전 원칙)를 지킬 수 없다.
스프링은 가능하다(스프링의 등장)
그런데 스프링이 다형성, OCP, DIP 원칙을 지킬 수 있게 해 준다!
DI(의존성 주입), DI 컨테이너를 사용한다면.
즉, 클라이언트 코드의 변경 없이 기능 확장이 가능하다.
출처: 스프링 핵심 원리 - 기본편
'교육, 학습 > 인프런_김영한' 카테고리의 다른 글
HTTP 웹 기본 지식 - IP 프로토콜, TCP/UDP, PORT, DNS (0) | 2022.05.14 |
---|---|
스프링 핵심원리 기본 - 객체 지향을 위한 SOLID원칙 (0) | 2021.12.29 |
댓글