Spring 간단 정리
Spring
Spring의 역사
Spring의 아버지 로드 존슨은 객체지향의 이점을 잃어버리는 EJB의 문제점을 지적했다. EJB없이 품질이 좋은 확장 가능한 애플리케이션 개발을 위해서 Spring의 핵심 개념을 제작하였다. 핵심 개념에는 BeanFactory, ApplicationContext, POJO, 제어의 역전 (IoC, Inversion of Control), 의존 관계 주입 (DI, Dependency Injection) 등이 있다.
Spring이라는 이름은 EJB라는 겨울을 넘어 새로운 시작인 봄을 의미한다.
Spring Projects
Spring은 모든 프로젝트가 모듈식으로 설계되어 있기 때문에 필요한 것들만 모아서 원하는 애플리케이션을 구성할 수 있다. 그 중심에는 Spring 프레임워크와 Spring boot가 있다.
Spring Framework: DI, 트랜잭션 관리, 웹 앱, 데이터 접근, 메시징 등 Spring의 핵심 지원을 제공한다.
Spring boot: Spring을 편리하게 사용할 수 있도록 지원한다. 특징으로는 Tomcat이 내장되어 있기 때문에 웹 서버를 따로 설치하지 않아도 된다.
그 외에
Spring Data: relation, non-relational, map-reduce 등 데이터 접근에 대한 일관된 접근 방식을 제공한다. ex) Spring Data JPA, Spring Data MongoDB, Spring Data REST 등
Spring Cloud: 분산 시스템의 common patterns을 제공한다. 마이크로 서비스를 구축하고 배포하는데 유용하다.
Spring Security: 사용자 정의 가능한 인증 및 접근 제어가 가능하다. Spring 기반의 애플리케이션을 보호한다. 또한 Spring Security를 활용하여 OAuth 인증 서버를 제작할 수 있다.
Spring Session: 유저의 세션 정보를 관리하기 위한 API가 들어 있다.
Spring HATEOAS: HATEOAS 원칙을 따르는 REST 생성을 단순하게 만들어 준다.
Spring REST Docs: Spring MVC Test 혹은 REST Assured로 자동 생성된 snippets을 결합하여 RESTful 서비스를 문서화 할 수 있다.
그 밖에도 Spring Batch, Spring Integration 등 다양한 project가 있고, 사용자는 필요한 모듈을 조합하여 애플리케이션을 제작할 수 있다. spirng.io의 Spring projects 탭에서 다양한 project를 확인해 볼 수 있다.
참고 :
Spring의 핵심개념
Spring의 핵심개념은 생각보다 단순하다. Spring은 Java 언어 기반의 프레임워크이다. Java 언어의 가장 큰 특징은 바로 객체지향 언어라는 것이다.
Spring은 단순히 웹 서버를 뛰우고, DB에 편리하게 접근하는 기술이 아닌, 객체 지향 언어가 가진 강력한 특징을 잘 살려주는 프레임워크이다. 이것이 Spring의 핵심 개념이고, 좋은 객체지향을 만들기 위해서 Spring의 핵심 기술이 개발되었다.
참고 :