-
SpringSpring/Spring 2022. 1. 13. 22:25728x90반응형
Spring의 시작
Spring은 개발자라면 1번은 접하게 되는 단어이다. 단어에서 알 수 있듯이 Spring이란 봄을 뜻하는 말이다.
Spring이란 이름이 붙여진 이유가 뭘까?
과거에는 서버 어플리케이션의 생산성의 향상과 이동성을 실현하기 위해서 생겨난 Enterprise JavaBeans(EJB)를 사용 하였다. 하지만 이 EJB는 사용하기에 너무 복잡하고 서버를 띄우는데 느렸다. EJB가 제공하는 인터페이스를 다 구현해야했고, EJB에 의존적으로 개발을 해야했기때문에 개발을 하면 할 수록 코드가 복잡해지는 단점과 코드를 테스트하는데 서버가 가동되는 시간이 오래걸렸던점 등 여러 이유로 EJB는 외면받게 되었다.
이러한 EJB를 사용했던 개발자 중 로드 존슨(Rod Johnson)이 EJB의 단점을 보완하여 훨씬 간편하게 개발할 수 있는 오픈소스를 개발하게 되었다. 이 로드 존슨이 만든 오픈 소스를 '겨울(EJB)가 지나가고 봄(Spring)이 왔다' 라는 개발의 새로운 시작이라는 뜻으로 Spring이란 이름이 탄생한것이다.
Spring이란?
Spring은 특정 하나의 기술이 아닌 여러가지 기술의 모임이라고 보면된다. 더 자세히 말하자면 'Java로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀'이라 할 수 있다.
- Spring은 자바 언어 기반의 프레임워크
- 자바 언어의 기반으로 객체 지향 언어의 특징을 살린 프레임워크
- 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크
Spring이 제공하는 기술
- Spring Framework
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다. IOC기반의 Framework
더보기Spring Framework
- 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트 등
- 웹 기술 : Spring MVC, Spring WebFlux
- 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
- 테스트 : 스프링 기반 테스트
- 최근에는 스프링 부트를 통하여 스프링 프레임워크 기술들을 편리하게 사용
- Spring Boot
스프링 프레임워크 기반 프로젝트와 WAS에 대한 설정 없이 바로 개발에 들어갈 수 있도록 만든 프레임워크이다. 외부 라이브러리들을 각 버전에 맞게 가져와 편리하게 사용가능하며 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성해준다. 즉, 스프링 부트는 스프링 프레임워크가 여러 추가 기술들을 편리하게 사용하도록 제공하는 일종의 '틀'이다. - Spring Data
기본 데이터 저장소에 대한 특성을 유지하며, 데이터 엑세스 방법에 대하여 친숙하고 익숙한 접근 방법을 제시하는 Spring 기반 프로그래밍 모델 - Spring Session
사용자의 세션 정보를 관리하기 위하여 API와 구현체를 제공 - Spring Security
애플리케이션의 보안(인증과 권한,인가 등)을 담당하는 스프링 하위 프레임워크 - Spring Rest Docs
Test를 기반으로 API 문서를 자동으로 작성해주는 도구 - Spring
로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공 - Spring Cloud
스프링 프레임워크 환경에서 마이크로서비스아키텍처(MSA)를 구축할 수 있도록 도와주는 프레임워크
위 기술들의 자세한 내용이 필요하다면 아래 사이트를 참고하자.
728x90반응형'Spring > Spring' 카테고리의 다른 글
스프링의 등장 - 순수 자바 코드에서 스프링까지 3 , IoC(제어의 역전)와 Di 그리고 등장하는 스프링 (0) 2022.01.16 스프링의 등장 - 순수 자바 코드에서 스프링까지 2 (0) 2022.01.16 스프링의 등장 - 순수 자바 코드에서 스프링까지 1 (0) 2022.01.15 SOLID - SRP, OCP, LSP, ISP, DIP (0) 2022.01.14 객체 지향 프로그래밍 (OOP, Object-Oriented Programming) (0) 2022.01.13