객체 지향 프로그래밍. 스프링을 배움과 동시에 객체 지향 설계를 고민하는 개발자로 성장할 수 있다.
참고 https://hoon93.tistory.com/56
먼저 java bean이란 java 객체를 재사용할 수 있도록 즉, 컴포넌트화시킬 수 있는 코딩 방침을 정의해 놓은 것 (bean=component=객체)
EJB란 엔터프라이즈급 어플레이션 개발을 단순화하기 위해 발표한 스펙.
개발을 하다보면 많은 객체들을 만나게 되는데, 이러한 비즈니스 객체들을 관리하는 컨테이너를 만들어서 필요할 때마다 컨테이너로부터 객체를 받는 식으로 관리하면 효율적이겠다! 라는 것에서 탄생
But 취지는 좋았으나
1. 서비스가 실제 구현해야하는 실제 비즈니스 로직보다 EJB 컨테이너를 사용하기 위한 상투적인 코드들이 많다는 불편함
2. 설정이 매우 복잡하다는 한계점이 있었다.
EJB는 컨테이너로부터 필요한 객체를 꺼내쓰는 방식으로 객체들 간의 의존성을 해결하려는 것이었지만, 비즈니스 로직에 특정 기술이 종속된다는 것이 가장 큰 문제 였다. 이에 2002년 로드 존슨이 이를 지적하며 책 출간. 특정 클래스나 인터페이스를 구현하지 않는 평범한 자바 클래스(POJO(plain old java Object))를 이용한다
EJB의 대체, 단순함의 승리(경량급), 사실상 표준 기술
스프링은 위 그림과 같은 여러 객체들을 의존성 해결(DI) 및 제어(IOC)하며 객체들의 라이프 사이클을 관리해줍니다.
즉, 특정 기술에 종속되지 않고 객체를 관리할 수 있는 컨테이너를 제공하는 것이 스프링의 기본 철학
핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트
웹기술 : 스프링 MVC, 스프링 WebFlux
데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
테스트 : 스프링 기반 테스트 지원
언어 : 코틀린, 그루비
일단은 이런것들이 있다고 맛만 보고 넘어가자
스프링을 편하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
Tomcat같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
손 쉬운 빌드 구성을 위한 starter 종속성 제공
스프링과 서드파티(외부) 라이브러리 자동 구성
메트릭, 상태 확인, 외부 구성과 같은 프로덕션 준비 기능 제공
관례에 의한 간결한 설정
스프링은 자바 언어 기반의 프레임워크
자바 언어의 가장 큰 특징 -> 객체 지향 언어
스프링은 객체 지향 언어가 가진 가장 강력한 특징을 살려내는 프레임워크
스프링은 좋은 객제 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크