※ 본문은 김영한 선생님의 인프런 '스프링 핵심 원리 - 기본편' 강의를 듣고 정리한 내용임을 알립니다.
▶ Spring의 간략한 탄생 배경
- 옛날에는 EJB(Enterprise Java Beans)를 활용하여 개발을 진행하였으나 무척 까다로운 방법이었음
- 2002년, Rod Johnson이 EJB의 문제점을 지적하며 약 30,000 라인의 기반 기술을 예제 코드로 선보임
- 책 출간 직후 Juergen Hoeller, Yann Caroff가 Rod Johnson에게 오픈소스 프로젝트 제안
- EJB라는 겨울을 넘어 새로운 시작이라는 뜻으로 'Spring'이라는 이름을 지었음
- 스프링의 핵심 코드의 상당수는 유겐 휠러가 지금도 개발 중
- 지금 시대에 자바 기술을 사용할 때 스프링과 JPA가 가장 큰 메인 기술로 자리잡게 됨
▶ Spring이라는 단어의 여러 의미들
- 스프링 DI 컨테이너 기술
- 스프링 프레임워크
- 스프링 부트, 스프링 프레임워크 등을 모두 포함하는 스프링 생태계
→ 요즘에는 주로 스프링 생태계를 의미함
▶ Spring에 포함된 기술들
- 핵심 : 스프링 프레임워크, 스프링부트
- 선택 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드 등
→ 가장 중요한 것은 스프링 프레임워크
▶ Spring의 핵심적인 기능
Spring은 자바 언어 기반의 프레임워크이며, 자바 언어의 가장 큰 특징은 객체 지향 언어라는것
→ Spring은 객체 지향의 특징인 추상화 / 캡슐화 / 상속 / 다형성 중에서 다형성을 적극 활용
→ 다형성의 본질 : 역할(인터페이스)과 구현(인터페이스를 구현할 클래스)을 명확히 분리 / 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능 (핵심은 구현보다 역할이 먼저! 인터페이스를 안정적으로 잘 설계할 것)
→ Spring의 IoC(제어의 역전), DI(의존관계 주입)는 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있게 지원
→ 그렇기에 Spring은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크가 되어줌
'JVM > Spring' 카테고리의 다른 글
ComponentScan과 의존관계 주입 방법에 대해서 (0) | 2021.03.24 |
---|---|
싱글톤 컨테이너 (0) | 2021.03.24 |
스프링 컨테이너와 스프링 빈 (0) | 2021.03.23 |
AppConfig와 IoC, DI에 관하여 (0) | 2021.03.22 |
김영한 선생님의 스프링 입문 강의를 공부하고서 (0) | 2021.03.12 |