Loading...
Spring Framework Reference Documentation 7.0.2의 Overview의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Spring은 Java 엔터프라이즈 애플리케이션을 쉽게 생성할 수 있게 해줍니다. Spring은 엔터프라이즈 환경에서 Java 언어를 수용하는 데 필요한 모든 것을 제공하며, JVM에서 대체 언어로서 Groovy와 Kotlin을 지원하고, 애플리케이션의 필요에 따라 다양한 종류의 아키텍처를 생성할 수 있는 유연성을 제공합니다. Spring Framework 6.0부터 Spring은 Java 17+를 요구합니다.
Spring은 광범위한 애플리케이션 시나리오를 지원합니다. 대규모 엔터프라이즈에서는 애플리케이션이 오랫동안 존재하는 경우가 많고, 개발자가 업그레이드 주기를 제어할 수 없는 JDK와 애플리케이션 서버에서 실행되어야 합니다. 다른 애플리케이션은 서버를 임베디드한 단일 jar로 실행될 수 있으며, 클라우드 환경일 수도 있습니다. 또 다른 애플리케이션은 서버가 필요하지 않은 standalone 애플리케이션(batch나 integration workload 등)일 수도 있습니다.
Spring은 오픈 소스입니다. Spring은 다양한 실전(use case)에 기반하여 지속적인 피드백을 제공하는 크고 활발한 커뮤니티를 가지고 있습니다. 이는 Spring이 매우 오랜 기간에 걸쳐 성공적으로 진화하는 데 도움이 되었습니다.
"Spring"이라는 용어는 컨텍스트에 따라 서로 다른 의미를 가집니다. 이 용어는 모든 것이 시작된 Spring Framework 프로젝트 자체를 가리키는 데 사용될 수 있습니다. 시간이 지나면서 다른 Spring 프로젝트들이 Spring Framework 위에 구축되었습니다. 대부분의 경우 사람들이 "Spring"이라고 말할 때는 전체 프로젝트 패밀리를 의미합니다. 이 레퍼런스 문서는 기반인 Spring Framework 자체에 초점을 맞춥니다.
Spring Framework는 모듈로 나뉩니다. 애플리케이션은 필요한 모듈을 선택할 수 있습니다. 핵심에는 설정 모델과 의존성 주입 메커니즘을 포함하는 core 컨테이너의 모듈들이 있습니다. 그 외에도 Spring Framework는 메시징, 트랜잭션 데이터 및 퍼시스턴스, 웹을 포함한 다양한 애플리케이션 아키텍처를 위한 기반 지원을 제공합니다. 또한 Servlet 기반 Spring MVC 웹 프레임워크와, 그와 병행하여 Spring WebFlux 리액티브 웹 프레임워크를 포함합니다.
모듈에 대한 참고 사항: Spring Framework의 jar는 모듈 경로(Java 모듈 시스템)에 배포할 수 있습니다. 모듈 활성화 애플리케이션에서 사용하기 위해 Spring Framework jar에는 jar artifact 이름과는 독립적으로 안정적인 언어 수준 모듈 이름(spring.core, spring.context 등)을 정의하는 Automatic-Module-Name 매니페스트 엔트리가 포함되어 있습니다. jar는 . 대신 -를 사용하는 동일한 네이밍 패턴을 따릅니다. 예를 들어, spring-core와 spring-context가 있습니다. 물론 Spring Framework의 jar는 클래스패스에서도 잘 동작합니다.
Spring은 초기 J2EE 명세의 복잡성에 대한 대응으로 2003년에 탄생했습니다. 일부에서는 Java EE와 그 현대적 후속인 Jakarta EE가 Spring과 경쟁 관계에 있다고 생각하지만, 실제로는 상호 보완적입니다. Spring 프로그래밍 모델은 Jakarta EE 플랫폼 명세를 수용하지 않고, 대신 기존 EE 우산에서 신중하게 선택된 개별 명세와 통합합니다:
Spring Framework는 또한 애플리케이션 개발자가 Spring Framework가 제공하는 Spring-specific 메커니즘 대신 사용하도록 선택할 수 있는 Dependency Injection(JSR 330)과 Common Annotations(JSR 250) 명세를 지원합니다. 원래 이들은 공통 javax 패키지를 기반으로 했습니다.
Spring Framework 6.0부터 Spring은 기존 javax 패키지 대신 jakarta 네임스페이스를 기반으로 하는 Jakarta EE 9 수준(예: Servlet 5.0+, JPA 3.0+)으로 업그레이드되었습니다. EE 9를 최소로 하고 EE 10을 이미 지원함에 따라 Spring은 Jakarta EE API의 향후 진화를 즉시(out-of-the-box) 지원할 준비가 되어 있습니다. Spring Framework 6.0은 웹 서버로서 Tomcat 10.1, Jetty 11과 완전히 호환되며, Hibernate ORM 6.1과도 호환됩니다.
시간이 지나면서 애플리케이션 개발에서 Java/Jakarta EE의 역할은 진화해 왔습니다. J2EE와 Spring의 초기에는 애플리케이션이 애플리케이션 서버에 배포되도록 생성되었습니다. 오늘날에는 Spring Boot의 도움으로 애플리케이션이 데브옵스 및 클라우드 친화적인 방식으로 생성되며, 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에서 확인할 수 있습니다.
프레임워크를 배울 때는 무엇을 하는지뿐만 아니라 어떤 원칙을 따르는지도 아는 것이 중요합니다. 다음은 Spring Framework의 지침 원칙입니다:
how-to 질문이 있거나 이슈를 진단하거나 디버그해야 하는 경우 Stack Overflow 사용을 권장합니다. Stack Overflow에서 사용하도록 제안된 태그 목록은 여기를 클릭하여 확인할 수 있습니다. Spring Framework에 문제가 있다고 상당히 확신하거나 기능을 제안하고 싶은 경우 GitHub Issues를 사용해 주세요.
해결 방법이나 제안된 fix가 있는 경우 Github에 pull request를 제출할 수 있습니다. 그러나 가장 사소한 이슈를 제외하고는 이슈 트래커에 티켓이 등록되기를 기대한다는 점을 기억해 주세요. 이슈 트래커에서는 논의가 이루어지고, 향후 참조를 위한 기록이 남습니다.
자세한 내용은 CONTRIBUTING top-level 프로젝트 페이지의 가이드를 참조하세요.
Spring을 처음 시작하는 경우, Spring Boot-based 애플리케이션을 생성하여 Spring Framework 사용을 시작하는 것이 좋습니다. Spring Boot는 프로덕션 준비가 된 Spring 기반 애플리케이션을 빠르게(그리고 opinionated하게) 생성할 수 있는 방법을 제공합니다. Spring Boot는 Spring Framework를 기반으로 하며, 설정보다 컨벤션을 선호하고, 가능한 한 빠르게 시작할 수 있도록 설계되었습니다.
start.spring.io를 사용하여 기본 프로젝트를 생성하거나, Getting Started Building a RESTful Web Service와 같은 "Getting Started" 가이드 중 하나를 따라갈 수 있습니다. 이러한 가이드는 더 쉽게 소화할 수 있을 뿐만 아니라 매우 태스크 중심이며, 대부분 Spring Boot를 기반으로 합니다. 또한 특정 문제를 해결할 때 고려할 수 있는 Spring 포트폴리오의 다른 프로젝트도 다룹니다.
Core Technologies