김영한님 강의 정리,,
EJB
과거 자바 진영의 표준 기술로 오늘날 spring +jpa의 혼합
pojo로 회귀를 생각할 정도로 복잡하고 어려움
스프링
- ejb 컨테이너 대체
- 단순함을 지향
- 현재의 표준 기술
하이버네이트
- ejb 엔티티빈 기술을 대체
- jpa 표준의 시초
인터페이스만 있으며 구현은 따로
스프링
스프링에는 여러 기술들이 포함되어 있다.
- 스프링 코어 : 스프링의 핵심
- 스프링 부트 : 스프링의 여러 기술들의 사용을 돕는 기술
- 스프링 데이터 : crud를 손쉽게 할 수 있도록 도와주는 기술 (spring jpa가 가장 보편적)
- 스프링 세션 : 세션 기능을 용이하게
- 스프링 시큐리티 : 보안 관련
- 스프링 Rest Docs : api 문서를 편리하게
- 스프링 배치 : 실제 배포되어 서비스 중인 어플리케이션에서 전체 데이터를 업데이트 하고자 할 때 한번에 실시간에 처리하기에 어려움, 따라서 일부를 나눠 처리하는 방식으로 해결하는데 이런 처리에 특화된 기술
스프링 핵심 기술
핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트 등
웹 기술 : 스프링 Mvc, 스프링 WebFlux
데이터 접근 기술: 트랜젝션, JDBC, ORM, XML
기술 통합 : 캐시, 테스트
스프링 부트
- 단독으로 실행할 수 있는 스프링 어플리케이션을 쉽게 생성
Tomcat같은 웹 서버를 별도로 설치하지 않아도 됨( 내장되어있음)
- starter 종속성 제공
- 스프링과 서드 파티 라이브러리 자동 구성 (= 스프링 버전에 맞는 라이브러리를 알아서 챙김)
- 메트릭, 상태 확인, 외부 구성 등의 프로덕션 준비 기능 제공( 운영에서 모니터링과 관련)
- 관례에 의한 간결한 설정
스프링 단어
스프링의 의미는 문맥에 따라 다르게 사용
-
스프링 빈을 관리하는 DI 컨테이너 기술
-
프레임 워크 자체
-
부트, 프레임워크 등을 포함한 스프링 생태계 전반
만들어진 이유 (핵심 개념)
스프링은 자바 언어의 프레임워크.
자바는 객체 지향 언어.
따라서 스프링은 객체 지향의 강력한 특징을 잘 살려 개발 할 수 있도록 함에 의의
스프링의 DI 컨테이너 or Ioc 컨테이너가 이를 가능하게 해줌