Spring의 종류
- 스프링부트(Spring Boot)
- 스프링은 개발 환경 설정이 꽤나 어려운 편에 속합니다. 그래서 스프링의 개발 환경의 어려운점을 보완하고자 만든것이 "SpringBoot"입니다. 환경 설정을 최소화 하고 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다.
- 스프링(Spring Framework)
- 스프링의 핵심이 되는 DI(의존성 주입), AOP(관점지향 프로그래밍) 기능들을 제공합니다. 웹 애플리케이션을 개발할 때는 스프링 MVC를 사용하는 등 여러가지 기능이 있습니다.
- 스프링 데이터(Spring Data)
- 데이터 연동을 위한 단일 API를 제공합니다. 이 API를 기반으로 JPA, MongoDB, MySQL 이러한 RDBMS나 NoSQL과의 연동을 적은 양의 코드로 처리할 수 있도록 도와줍니다.
- 스프링 클라우드(Spring Cloud)
- 스프링 클라우드는 서비스 레지스트리(Service Registry)와 컨피규레이션 서버(configuration server), 서킷 브레이커(circuit breaker), 클라우드 버스(cloud bus), OAuth2 패턴, API 게이트웨이와 같은 마이크로서비스 기반 아키텍처에서 사용되는 모든 검증된 패턴을 구현합니다.
- 스프링 시큐리티(Spring Security)
- 인증과 허가에 대한 기반 프레임워크 및 관련 모듈을 제공합니다. 웹 애플리케이션을 개발할 때 설정해야하는 보안을 간단한 설정과 약간의 코드로 처리가 가능합니다.
- 스프링 세션(Spring Session)
- 스프링 세션은 사용자의 세션 정보를 관리하기 위한 API 및 구현을 제공합니다.
- 스프링 인터그레이션(Spring Intergration)
- 시스템 간의 연동을 위한 메시징 프레임워크를 제공합니다.
- 스프링 HATEOAS(Spring HATEOAS)
- Spring HATEOAS는 Spring MVC로 작업 할 때 HATEOAS 원칙을 따르는 REST 표현을 쉽게 생성 할 수 있도록 몇가지 API를 제공합니다.
- 스프링 REST(Spring REST Docs)
- SPring REST Docs는 RESTful 서비스를 문서화하는데 큰 도움이 됩니다. Asciidoctor로 작성된 수기 문서와 Spring MVC 테스트로 생성된 자동 생성 스니펫을 결합합니다. 이 접근 방식을 사용하면 Swagger와 같은 도구로 생성된 문서의 한계를 벗어날 수 있습니다.
❓Asciidoctor란 페이지를 작성하기 위한 완성된 텍스트 작성 형식(규격) 입니다.
- 스프링 배치(Spring Batch)
- 배치 처리를 위한 기반 프레임워크를 제공해 줍니다. 데이터 처리, 흐름제어, 실패 재처리 등 배치 처리 애플리케이션이 필요로 하는 기능을 기본적으로 제공합니다.
❓배치(Batch) 작업이란 데이터를 실시간으로 처리하는 것이 아니라, 일괄적으로 모아서 처리하는 작업을 말합니다.
- 스프링 AMQP(Spring AMQP)
- Spring AMQP 프로젝트는 핵심 Spring 개념을 AMQP 기반 메시징 솔루션 개발에 적용합니다. 메시지 송수신을 위한 고급 추상화로 "템플릿"을 제공합니다. 또한 "수신기 컨테이너"를 사용하여 메시지 기반 POJO를 지원합니다.
❓POJO란 Plain Old Java Object의 약자로, 특정 "기술"에 종속되어 동작하는 것이 아닌 순수한 자바 객체를 말하는 것입니다.
- 스프링 안드로이드(Spring for Android)
- Android 용 Spring은 Android 앱에서 사용할 Spring 프로젝트 제품군의 구성 요소를 제공하도록 설계된 프레임워크입니다. 모든 Spring 프로젝트와 마찬가지로 Android 용 Spring의 장점은 얼마나 쉽게 확장 가능한지에 있습니다.
- 스프링 크리드허브(Spring CredHub)
- Spring CredHub는 Cloud Foundry 플랫폼에서 실행되는 CredHub 서버에서 자격 증명을 저장, 검색 및 삭제하기 위한 클라이언트 측 지원을 제공합니다. CredHub는 다양한 유형의 자격 증명을 안전하게 저장, 생성, 검색 및 삭제할 수 있는 API를 제공합니다.
- 스프링 플로(Spring Flo)
- Spring Flo는 파이프 라인 및 간단한 그래프를 위한 임베드 가능한 HTML5 비주얼 빌더를 제공하는 JavaScript 라이브러리 입니다. 이 라이브러리는 Spring Cloud Data Flow에서 스트림 빌더의 기반으로 사용됩니다. Flo에는 커넥터, 제어노드, 팔레트, 상태 전환 및 그래프 토폴로지와 같은 통합 흐름 디자이너의 모든 기본요소가 포함되어 있습니다.
- 스프링 아파치 카프카(Spring for Apache Kafka)
- Spring for Apache Kafka(spring-kafka) 프로젝트는 핵심 Spring 개념을 Kafka 기반 메시징 솔루션 개발에 적용합니다. 메시지 전송을 위한 고급 추상화로 "템플릿"을 제공합니다.
- 스프링 LDAP(Spring LDAP)
- Spring LDAP는 Spring jdbc와 동일한 원칙을 기반으로 구축된 Java로 LDAP 프로그래밍을 단순화하는 라이브러리 입니다. 예외 처리 및 리소스 정리와 같은 기존 LDAP 프로그래밍과 관련된 모든 배관 작업을 캡슐화 합니다.
- 스프링 모바일(Spring Mobile)
- Spring Mobile은 Spring 웹 사이트에 요청하는 디바이스 유형을 감지하고 해당 디바이스를 기반으로 대체보기를 제공하는 기능을 제공하는 프레임 워크입니다. 모든 Spring 프로젝트와 마찬가지로 Spring Moblie의 진정한 힘은 얼마나 쉽게 확장 할 수 있는지에 있습니다.
- 스프링 로(Spring Roo)
- Spring Roo는 즉각적인 결과를 빠르고 쉽게 제공 할 수 있는 경량 개발자 도구입니다. 무엇보다도 Java로 모두 코딩하고 기본 Java 지식, 기술 및 경험을 재사용 가능합니다.
- 스프링 쉘(Spring Shell)
- Spring Shell 프로젝트의 사용자는 Spring Shell jar에 의존하고 자체 명령 (Spring Bean에서 메서드로 제공됨) 을 추가하여 완전한 기능을 갖춘 쉘 애플리케이션을 쉽게 빌드 가능합니다. 프로젝트의 REST API와 상호작용하거나 로컬 파일 콘텐츠로 작업합니다.
- 스프링 상태기계(Spring Statemachine)
- Spring Statemachine은 애플리케이션 개발자가 Spring 애플리케이션과 함께 상태 머신 개념을 사용하는 프레임워크입니다. 상태 머신은 동작이 항상 일관되게 보장되어 비교적 디버그하기 쉽기 때문에 강력합니다.
- 스프링 금고(Spring Vault)
- Spring Vault는 익숙한 Spring 추상화 및 비밀 액세스, 저장 및 취소를 위한 클라이언트 측 지원을 제공합니다. Vault와 상호 작용하기 위한 저수준 및 고수준 추상화를 모두 제공하여 사용자가 인프라 문제를 벗어날 수 있습니다. HashiCorp의 Vault를 사용하면 모든 환경에서 애플리케이션에 대한 외부 비밀 데이터를 중앙에서 관리할 수 있습니다.
- 스프링 웹 플로우(Spring Web Flow)
- Spring Web Flow는 Spring MVC를 기반으로 웹 애플리케이션의 "흐름"을 구현할 수 있습니다. 흐름은 사용자에게 일부 비즈니스 작업 실행을 안내하는 일련의 단계를 캡슐화 합니다. HTTP 요청에 대해 수행되고 상태를 가지며, 트랜잭션적인 특징을 보이고 동적이고 오랜시간 구동됩니다.
- 스프링 웹 서비스(Spring Web Service)
- Spring Web Service는 문서 중심 웹 서비스를 만드는 데 중점을 둔 Spring 커뮤니케이션 입니다. XML 페이로드를 조작하는 여러 방법 중 하나를 사용하여 유연한 웹 서비스를 생성할 수 있도록 SOAP 서비스 개발이 하기 쉬워집니다.
참고
'Back-end > spring' 카테고리의 다른 글
[Spring] @EnableGlobalMethodSecurity Deprecated (0) | 2023.08.31 |
---|---|
[Spring] DI, IoC 정리 (0) | 2022.11.14 |
[Spring] Spring Bean의 개념과 Bean Scope의 종류 (0) | 2022.11.14 |
[Spring] Lombok 어노테이션 정리 (1) | 2022.11.14 |
[Spring JPA] JPA는 무엇인가? (0) | 2022.09.23 |