Today I Learned_220329
Spring Framework
스프링의 역사
EJB를 사용하고 있었음 : 이론적으로는 좋은 프레임워크였지만 비싸고 어렵고 복잡하고 느림
로드 존슨이 EJB를 대체한 단순한 개발 프레임워크 제시(EJB의 문제점 지적) -> 스프링의 기원(J2EE Design and Development)
스프링은 설정, 세팅, 빌드가 어려운 프레임워크 -> 2014년 스프링 부트가 출시됨으로써 스프링 설정을 쉽게 할 수 있게 되었다. 큰 전환점 중 하나.
스프링 생태계
스프링은 하나의 기술이 아니라 여러 기술들의 모음이라 할 수 있음
생태계 필수 요소 : 스프링 프레임워크(스프링의 가장 핵심 - DI 컨테이너, AOP, 이벤트 등), 스프링 부트(스프링 프레임워크를 편리하게 사용할 수 있도록 도와줌)
생태계 선택 요소 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs(API, 테스트) 등
스프링 부트
스프링 부트는 스프링 프레임워크를 당겨와서 편리하게 사용할 수 있도록 하는 기술로, 스프링 프레임워크와 별도로 사용할 수 있는 기술이 아니다.
너무 편리해서 최근에는 기본으로 사용하는 추세.
스프링 부트 사용 이전 : 빌드하고 빌드한것을 톰캣 서버 위에 올려놓고 띄운다
스프링 부트 사용 이후 : 스프링 부트가 빌드하고 서버로 띄우는 것 까지 자체적으로 수행
기본적인 설정이 되어 있으며, 모니터링 등 제공
외부 라이브러리 구성이 편리함(버전에 따른 최적화된 라이브러리를 찾아주는 등..)
스프링의 의미
문맥에 따라 스프링의 의미는 달라질 수 있다.
- 스프링 빈을 관리하는 DI 컨테이너 기술
- 스프링 프레임워크 자체
- 스프링 부트, 스프링 프레임워크 등을 포함한 스프링 생태계 -> 가장 많이 사용되는 용도
스프링 핵심 개념
스프링 프레임워크 : 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크(EJB는 EJB에 의존적으로 개발해야 해서 객체지향의 장점을 잃어버린다) -> 스프링은 좋은 객체지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크