스프링이란?
- 스프링은 여러 기술의 모음집이다.
- 스프링 프레임워크, 스프링 부트, 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 배치, 스프링 클라우드, 스프링 Rest Docs 를 모두 묶어서 스프링이라고 부른다.
- 스프링 프레임워크
- 스프링의 핵심
- 스프링 DI 컨테이너, AOP, 스프링 MVC, 트랜잭션 관리 등과 같은 스프링의 핵심 기술들을 갖고 있다.
- 스프링 부트
- 현재 스프링 프로젝트의 기본
- 스프링 프레임워크의 경우 설정 방법이 매우 복잡하기 때문에 사용하기 까다로운 부분이 존재한다. 따라서 "스프링 프레임워크를 간편하게 사용하기 위한 프레임워크" 가 등장
- 웹 서버를 내장하고 있다
- 스프링과 외부 라이브러리의 의존 관계 자동 설정
스프링은 왜 만들어졌을까?
- 스프링이 왜 만들어졌는지, 왜 이런 기술들을 제공하는지 알기 위해서는 스프링의 핵심 개념을 잘 이해해야 한다
- 스프링은 객체 지향 언어인 자바 기반 프레임워크이다.
- 스프링은 객체 지향 애플리케이션을 잘 개발할 수 있도록 도와주는 프레임워크가 된다
좋은 객체 지향 프로그래밍이란?
- 추상화, 캡슐화, 상속, 다형성 과 같은 특징을 갖고 있는 것이 객체 지향 프로그래밍이다
- 특히 이 중 다형성이 자바의 핵심이 되는 특징이다
다형성과 실세계 비유
- 흔히 다형성을 실세계에 비유하여 설명한다
- 물론 실세계와 객체 지향의 다형성을 1:1로 매칭하기는 어렵지만 수월하게 이해할 수 있다
- 현실 세계의 모든 객체를 역할과 구현으로 나누어서 생각해보자
- 역할에 의존하게 되면 구현체는 아무리 바뀌어도 클라이언트에 영향이 없다