ye._.veloper

[ Spring Framework Documentation ] 공식 문서 번역 1 - Overview 본문

Spring

[ Spring Framework Documentation ] 공식 문서 번역 1 - Overview

ye._.veloper 2023. 1. 24. 17:29

Spring Framework Overview

Spring을 사용하면 Java 엔터프라이즈 애플리케이션을 쉽게 만들 수 있습니다. JVM에서 대체 언어로 Groovy 및 Kotlin을 지원하고 애플리케이션의 요구 사항에 따라 다양한 종류의 아키텍처를 생성할 수 있는 유연성을 통해 엔터프라이즈 환경에서 Java 언어를 수용하는 데 필요한 모든 것을 제공합니다. Spring Framework 6.0부터 Spring에는 Java 17 이상이 필요합니다.

 

Spring은 광범위한 애플리케이션 시나리오를 지원합니다. 대기업에서 응용 프로그램은 종종 오랫동안 존재하며 업그레이드 주기가 개발자가 제어할 수 없는 JDK 및 응용 프로그램 서버에서 실행되어야 합니다. 다른 것들은 아마도 클라우드 환경에서 내장된 서버와 함께 단일 jar로 실행될 수 있습니다. 그러나 다른 것들은 서버가 필요하지 않은 독립 실행형 애플리케이션(예: 배치 또는 통합 워크로드)일 수 있습니다.

스프링은 오픈 소스입니다. 다양한 실제 사용 사례를 기반으로 지속적인 피드백을 제공하는 크고 활동적인 커뮤니티가 있습니다. 이것은 Spring이 오랜 시간에 걸쳐 성공적으로 진화하는 데 도움이 되었습니다.

What We Mean by "Spring"

"Spring"이라는 용어는 상황에 따라 다른 것을 의미합니다. 

모든 것이 시작된 Spring Framework 프로젝트 자체를 참조하는 데 사용할 수 있습니다. 시간이 지남에 따라 Spring 프레임워크 위에 다른 Spring 프로젝트가 구축되었습니다. 대부분의 경우 사람들이 "Spring"이라고 하면 전체 프로젝트 제품군을 의미합니다. 이 참조 문서는 기초인 Spring Framework 자체에 중점을 둡니다.

 

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

모듈에 대한 참고 사항: Spring의 프레임워크 jar는 JDK 9의 모듈 경로("Jigsaw")에 대한 배포를 허용합니다. Jigsaw 지원 애플리케이션에서 사용하기 위해 Spring Framework 5 jar에는 독립적인 안정적인 언어 수준 모듈 이름("spring.core", "spring.context" 등)을 정의하는 "Automatic-Module-Name" 매니페스트 항목이 있습니다. jar 아티팩트 이름(jar은 "." 대신 "-"를 사용하는 동일한 이름 지정 패턴을 따릅니다(예: "spring-core" 및 "spring-context"). 물론 Spring의 프레임워크 jar는 JDK 8 및 9+의 클래스 경로에서 계속 잘 작동합니다.

History of Spring and the Spring Framework

Spring은 초기 J2EE 사양 의 복잡성에 대한 응답으로 2003년에 등장했습니다 . 일부에서는 Java EE와 최신 후속 제품인 Jakarta EE가 Spring과 경쟁 관계에 있다고 생각하지만 실제로는 상호 보완적입니다. Spring 프로그래밍 모델은 Jakarta EE 플랫폼 사양을 수용하지 않습니다. 오히려 기존 EE 우산에서 엄선된 개별 사양과 통합됩니다.

 

     ◽ 서블릿 API ( JSR 340 )

     ◽ WebSocket API ( JSR 356 )

     ◽ 동시성 유틸리티 ( JSR 236 )

     ◽ JSON 바인딩 API ( JSR 367 )

     ◽ Bean 유효성 검사 ( JSR 303 )

     ◽ JPA ( JSR 338 )

     ◽ JMS ( JSR 914 )

     ◽  필요한 경우 트랜잭션 조정을 위한 JTA / JCA 설정도 가능합니다.

 

Spring Framework는 또한 애플리케이션 개발자가 Spring Framework에서 제공하는 Spring 특정 메커니즘 대신 사용하도록 선택할 수 있는 종속성 주입( JSR 330 ) 및 공통 주석( JSR 250 ) 사양을 지원합니다. javax원래는 공통 패키지 를 기반으로 했습니다 .

Spring Framework 6.0에서 Spring은 기존 패키지 jakarta대신 네임스페이스를 기반으로 Jakarta EE 9 레벨(예: Servlet 5.0+, JPA 3.0+)로 업그레이드되었습니다 . javax최소 EE 9와 이미 지원되는 EE 10을 통해 Spring은 Jakarta EE API의 추가 발전을 위한 기본 지원을 제공할 준비가 되었습니다. Spring Framework 6.0은 웹 서버인 Tomcat 10.1, Jetty 11 및 Undertow 2.3 및 Hibernate ORM 6.1과 완벽하게 호환됩니다.

 

시간이 지남에 따라 애플리케이션 개발에서 Java/Jakarta EE의 역할이 발전했습니다. J2EE 및 Spring 초기에는 애플리케이션 서버에 배포하기 위해 애플리케이션이 생성되었습니다. 오늘날 Spring Boot의 도움으로 응용 프로그램은 DevOps 및 클라우드 친화적인 방식으로 생성되며 Servlet 컨테이너가 내장되어 있고 변경하기가 쉽지 않습니다. Spring Framework 5부터 WebFlux 애플리케이션은 Servlet API를 직접 사용하지 않으며 Servlet 컨테이너가 아닌 서버(예: Netty)에서 실행할 수 있습니다.

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

Design Philosophy

프레임워크에 대해 배울 때 프레임워크가 무엇을 하는지 뿐만 아니라 어떤 원칙을 따르는지 아는 것이 중요합니다. 다음은 Spring Framework의 기본 원칙입니다.

 

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

 

     ◽ 다양한 관점을 수용합니다. Spring은 유연성을 수용하며 작업 수행 방법에 대해 독선적이지 않습니다. 다양한 관점에서 다양한 애플리케이션 요구 사항을 지원합니다.

 

     ◽ 강력한 이전 버전과의 호환성을 유지합니다. Spring의 진화는 버전 간에 주요 변경 사항을 거의 강제하지 않도록 신중하게 관리되었습니다. Spring은 Spring에 의존하는 애플리케이션 및 라이브러리의 유지 관리를 용이하게 하기 위해 엄선된 범위의 JDK 버전 및 타사 라이브러리를 지원합니다.

 

     ◽ API  디자인에 관심을 가져라. Spring 팀은 직관적이고 여러 버전과 여러 해에 걸쳐 유지되는 API를 만들기 위해 많은 생각과 시간을 투자합니다.

 

     ◽ 코드 품질에 대한 높은 기준을 설정하십시오. Spring Framework는 의미있고 최신이며 정확한 javadoc을 강조합니다. 패키지 간의 순환 종속성이 없는 깨끗한 코드 구조를 주장할 수 있는 극소수의 프로젝트 중 하나입니다.

Feedback and Contributions

사용 방법에 대한 질문이나 진단 또는 디버깅 문제의 경우 Stack Overflow를 사용하는 것이 좋습니다. Stack Overflow에서 사용할 추천 태그 목록을 보려면 여기 를 클릭 하세요. Spring Framework에 문제가 있다고 확신하거나 기능을 제안하고 싶다면 GitHub Issues 를 사용하십시오.

 

생각하고 있는 솔루션이나 제안된 수정 사항이 있는 경우  Github에서 풀 요청을 제출할 수 있습니다.  그러나 가장 사소한 문제를 제외한 모든 문제에 대해 토론이 진행되고 향후 참조를 위해 기록을 남기는 문제 추적기에 티켓이 제출될 것으로 기대합니다.

자세한 내용은 CONTRIBUTING 최상위 프로젝트 페이지의 지침을 참조하십시오.

Getting Started

Spring을 이제 막 시작하는 경우 Spring Boot 기반 애플리케이션 을 생성하여 Spring Framework 사용을 시작할 수 있습니다 . Spring Boot는 프로덕션 준비가 된 Spring 기반 애플리케이션을 생성하는 빠르고(독단적인) 방법을 제공합니다. Spring Framework를 기반으로 하며 구성보다 규칙을 선호하며 가능한 한 빨리 시작하고 실행할 수 있도록 설계되었습니다.

start.spring.io 를 사용 하여 기본 프로젝트를 생성하거나 RESTful 웹 서비스 시작하기 와 같은 "시작하기" 가이드 중 하나를 따를 수 있습니다 . 이해하기 쉬울 뿐만 아니라 이러한 가이드는 매우 작업 중심적이며 대부분 Spring Boot를 기반으로 합니다. 또한 특정 문제를 해결할 때 고려할 수 있는 Spring 포트폴리오의 다른 프로젝트도 다룹니다.

 

Comments