spring framework overview

Spring Framework Overview

Spring을 사용하면 Java 엔터프라이즈 애플리케이션을 쉽게 만들 수 있습니다.
Groovy 및 Kotlin을 JVM에서 대체 언어로 지원하고 응용 프로그램의 필요에 따라 다양한 종류의 아키텍처를 생성 할 수있는 유연성을 통해 기업 환경에서 Java 언어를 수용하는 데 필요한 모든 것을 제공합니다.
Spring Framework 5.1에서 Spring은 JDK 8+ (Java SE 8+)가 필요하며 JDK 11 LTS에 대해 즉시 사용할 수있는 지원을 제공합니다.

Spring은 다양한 애플리케이션 시나리오를 지원합니다.
대기업에서 애플리케이션은 오랫동안 존재하는 경우가 많으며 개발자가 제어 할 수없는 업그레이드주기를 가진 JDK 및 애플리케이션 서버에서 실행해야합니다.
다른 것은 클라우드 환경에 서버가 내장 된 단일 파일로 실행될 수 있습니다.
그러나 다른 서버는 서버가 필요없는 독립 실행 형 응용 프로그램 (일괄 처리 또는 통합 작업 부하 등) 일 수 있습니다.

Spring은 오픈 소스입니다. 다양한 범위의 실제 사용 사례를 기반으로 지속적인 피드백을 제공하는 크고 활동적인 커뮤니티가 있습니다.
이것은 봄이 오랜 시간 동안 성공적으로 진화하는 것을 도왔습니다.

“Spring” 이란 뜻

“Spring”이라는 용어는 다른 상황에서 다른 것을 의미합니다.
이 프로젝트는 스프링 프레임 워크 프로젝트 자체를 가리키는 데 사용할 수 있습니다.
시간이 흐르면서 다른 Spring 프로젝트가 Spring Framework 위에 구축되었습니다.
사람들이 “Spring”이라고 말하면 대부분 프로젝트의 전체 제품군을 의미합니다.
이 참조 문서는 스프링 프레임 워크 자체에 대한 토대에 중점을 둡니다.

스프링 프레임 워크는 여러 개의 모듈로 나뉩니다.
응용 프로그램은 필요한 모듈을 선택할 수 있습니다.
핵심은 구성 모델과 종속성 주입 메커니즘을 포함하여 핵심 컨테이너의 모듈입니다.
그 외에도 Spring Framework는 메시징, 트랜잭션 데이터 및 지속성, 웹 등 다양한 애플리케이션 아키텍처에 대한 기본 지원을 제공합니다.
또한 Servlet 기반 Spring MVC 웹 프레임 워크와 Spring WebFlux 대응 웹 프레임 워크를 병행하여 포함하고있다.

모듈에 대한 참고 사항 : Spring의 프레임 워크 jar는 JDK 9 모듈 경로 ( “Jigsaw”)에 배포 할 수 있습니다.
Jigsaw 지원 응용 프로그램에서 사용하기 위해 Spring Framework 5 jar에는 jar artifact와는 별도로 안정된 언어 수준 모듈 이름 ( “spring.core”, “spring.context”등)을 정의하는 “자동 모듈 이름” (jar는 “.”대신 “-“와 동일한 이름 지정 패턴을 따릅니다. 예 : “spring-core”및 “spring-context”).
물론 Spring의 프레임 워크 jar는 JDK 8과 9+에서 모두 classpath에서 잘 작동합니다.

Spring Framework 의 역사

Spring은 2003 년 초기 J2EE 사양 의 복잡성에 대한 응답으로 등장했습니다.
일부는 Java EE와 Spring을 경쟁 대상으로 간주하지만 실제로 Spring은 Java EE를 보완합니다.
Spring 프로그래밍 모델은 Java EE 플랫폼 사양을 포함하지 않습니다.
오히려 EE 우산에서 엄선 된 개별 사양과 통합됩니다.

  • 서블릿 API (JSR 340)
  • WebSocket API (JSR 356)
  • 동시성 유틸리티 (JSR 236)
  • JSON 바인딩 API (JSR 367)
  • 빈 검증 (JSR 303)
  • JPA (JSR 338)
  • JMS (JSR 914)
  • 필요한 경우 트랜잭션 조정을위한 JTA / JCA 설정을 제공합니다.

또한 Spring Framework는 Spring Framework에서 제공하는 Spring 고유의 메커니즘 대신 응용 프로그램 개발자가 사용할 수 있는 Dependency Injection (JSR 330) 및 Common Annotations (JSR 250) 사양을 지원합니다.

Spring Framework 5.0부터 Spring은 최소한 Java EE 7 레벨 (예 : Servlet 3.1+, JPA 2.1+)을 필요로하는 동시에 Java EE 8 레벨에서 새로운 API와 즉시 통합 할 수 있어야합니다 (예 : Servlet 4.0, JSON Binding API) 런타임시 발생합니다.
이렇게하면 Spring이 Tomcat 8 및 9, WebSphere 9 및 JBoss EAP 7과 완벽하게 호환됩니다.

시간이 지남에 따라 애플리케이션 개발에서 Java EE의 역할이 진화되었습니다.
Java EE 및 Spring 초기에 응용 프로그램은 응용 프로그램 서버에 배포되도록 만들었습니다.
오늘날 스프링 부트의 도움으로 응용 프로그램은 devops 및 cloud 친화적 인 방식으로 작성되며 Servlet 컨테이너가 임베드되고 변경 사항은 거의 없습니다.
Spring Framework 5에서 WebFlux 애플리케이션은 서블릿 API를 직접 사용하지 않으며 서블릿 컨테이너가 아닌 서버 (예 : Netty)에서 실행할 수 있습니다.

Spring은 혁신과 발전을 계속하고 있습니다.
Spring Framework 외에도 Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch 등과 같은 다른 프로젝트가있다.
각 프로젝트마다 고유 한 소스 코드 저장소, 문제 추적기 및 릴리스 종지가 있음을 기억해야합니다.
Spring 프로젝트의 전체 목록은 spring.io/projects 를 참조하십시오 .

설계원칙

프레임 워크에 대해 배울 때, 프레임 워크가하는 일뿐만 아니라 그 원리에 대해서도 아는 것이 중요합니다.
Spring Framework의 기본 원칙은 다음과 같습니다.

  • 모든 단계에서 선택권을 제공하십시오.
    Spring을 사용하면 가능한 한 늦게 설계 결정을 연기 할 수 있습니다.
    예를 들어 코드를 변경하지 않고 구성을 통해 지속성 공급자를 전환 할 수 있습니다.
    다른 많은 인프라 문제와 써드 파티 API와의 통합에서도 마찬가지입니다.

  • 다양한 관점을 수용하십시오.
    Spring은 융통성을 포용하고 어떻게해야 하는지에 대해 강조하지 않습니다.
    다양한 관점에서 다양한 응용 요구를 지원합니다.

  • 강력한 이전 버전과의 호환성 유지.
    Spring의 진화는 버전간에 몇 가지 중요한 변경 사항을 강요하기 위해 신중하게 관리되었습니다.
    Spring은 Spring을 사용하는 응용 프로그램과 라이브러리의 유지 관리를 용이하게하기 위해 JDK 버전과 써드 파티 라이브러리를 신중하게 선택한 범위를 지원합니다.

  • API 디자인에 대한주의.
    Spring 팀은 직관적이며 많은 버전과 여러 해에 걸친 API를 만드는 데 많은 시간과 노력을 기울이고 있습니다.

  • 코드 품질에 대한 높은 기준을 설정하십시오.
    Spring Framework는 의미 있고, 최신의 정확한 javadoc을 강조합니다.
    패키지간에 순환 의존성이없는 깨끗한 코드 구조를 요구할 수있는 프로젝트는 거의 없습니다.

참조