[기본기] 1. Spring?

khyojun·2022년 8월 26일
1
post-thumbnail

본 게시글은 김영한님의 스프링 핵심 원리 기본편을 정리한 글입니다.


🔍 Spring의 역사를 알아보자.

Spring의 역사를 알아보기 위하여서 예에에에엣 날로 한 번 가보자.

예에엣날에는 자바당 정파 기술이라는 느낌으로 EJB(Enterprise Java Bean)이라는 기술을 사용해왔었다고 한다. 간단하게 말하자면 이 기술은 되게 고급 기술들을 편하게 지원하여주는 아주 종합 선물 패키지 세트같은 존재였다고 한다.(ORM도 여기에 포함) 그러나 이 기술을 지금은 쓰지 않는 이유가 있지 않을까?

💥EJB를 쓰지 않게 된 이유

일단은 세세하게 말하자면 여러 이유들이 있겠지만 간단히 3가지 이유만 말해보자면
1. 사용하기가 너무 어렵고
2. 너무 복잡하고
3. 너무 느리다.

그리하여 대표적으로 2명의 사람이 EJB에 대한 단점을 말한 분들이 계신다. 바로 로드 존슨(스프링 창시자), 개빈 킹(하이버네이트 창시자)


📕 로드 존슨의 30,000줄

로드 존슨은 EJB를 사용하면서 느꼈던 문제점들을 지적하고 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보였다고 한다.
여기에 지금의 스프링 핵심 개념과 기반 코드가 들어가 있다. 그래서 유겐 휠러, 얀 카로프가 로드 존슨에게 오픈소스 프로젝트로 해보면 어떻겠냐고 제안을 하여..... 지금의 Spring이 되었다.

🍀 Spring 이름의 유래

스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작(봄)이라는 뜻으로 지음

📕HIBERNATE -> JPA


개빈 킹은 Hibernate를 직장에서 퇴근 후 자신이 만들어도 이것보단 잘 만들거 같아 개발을 하게 되었는데 사람들이 EJB의 것보다 더 많이 사용을 하게 되었다고 한다. 그 이후에 EJB의 측에서도 이 기술이 더 좋다는 것을 인정하게 되고 Hibernate를 가져와 JPA로 만들게 되었다고 한다. 거의 Hibernate의 복사본과 같은 느낌 같다랄까? 조금 더 정제되고, 안정성, 표준화를 시킨 것이 JPA라고 보면 될 것 같다.

📌스프링의 릴리즈 역사

  • 2003년 스프링 프레임워크 1.0 출시 - XML
  • 2006년 스프링 프레임워크 2.0 출시 - XML 편의 기능 지원
  • 2009년 스프링 프레임워크 3.0 출시 - 자바 코드로 설정
  • 2013년 스프링 프레임워크 4.0 출시 - 자바8
  • 2014년 스프링 부트 1.0 출시
  • 2017년 스프링 프레임워크 5.0, 스프링 부트 2.0 출시 - 리엑티브 프로그래밍 지원
  • 2020년 스프링 프레임워크 5.2.x, 스프링 부트 2.3.x

📕 Spring 생태계

📕 Spring 프레임워크

  • 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타
  • 웹 기술 : 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
  • 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
  • 테스트 : 스프링 기반 테스트 지원
  • 언어 : 코틀린, 그루비
  • 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용

📕 SpringBoot

  • 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
  • 스프링 3rd parth(외부) 라이브러리 자동 구성
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
  • 관례에 의한 간결한 설정

❗ 스프링의 진짜 핵심?

  • 스프링은 자바 언어 기반의 프레임워크
  • 자바 언어의 가장 큰 특징 - 객체 지향 언어
  • 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
  • 스프링은 좋은 객체 지향 어플리케이션을 개발할 수 있게 도와주는 프레임워크

출처

  1. 김영한님의 스프링 핵심 원리 기본편(https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8)
profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글