while(1) work();
반응형

Spring Framework Overview

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

Spring은 다양한 애플리케이션 시나리오를 지원합니다. 대기업에서는 애플리케이션이 오랫동안 존재하고 업그레이드 주기가 개발자가 제어할 수 없는 JDK 및 애플리케이션 서버에서 실행되어야 하는 경우가 많습니다. 다른 애플리케이션은 클라우드 환경에서 서버가 내장된 단일 jar로 실행될 수도 있습니다. 또 다른 애플리케이션은 서버가 필요 없는 독립형 애플리케이션(예: 배치 또는 통합 워크로드)일 수도 있습니다.

Spring은 오픈 소스입니다. 다양한 실제 사용 사례를 기반으로 지속적인 피드백을 제공하는 대규모의 활발한 커뮤니티가 있습니다. 이 덕분에 Spring은 오랜 시간 동안 성공적으로 발전해 왔습니다.

What We Mean by "Spring"

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

Spring 프레임워크는 모듈로 나뉩니다. 애플리케이션은 필요한 모듈을 선택할 수 있습니다. 핵심에는 구성 모델과 의존성 주입 메커니즘을 포함한 핵심 컨테이너의 모듈이 있습니다. 그 외에도 Spring 프레임워크는 메시징, 트랜잭션 데이터 및 지속성, 웹 등 다양한 애플리케이션 아키텍처에 대한 기본 지원을 제공합니다. 또한 서블릿 기반의 Spring MVC 웹 프레임워크와 Spring WebFlux 리액티브 웹 프레임워크도 포함되어 있습니다.

모듈에 대한 참고 사항: Spring의 프레임워크 jars를 사용하면 JDK 9의 모듈 경로("Jigsaw")에 배포할 수 있습니다. Jigsaw 지원 애플리케이션에서 사용하기 위해 Spring Framework 5 jar에는 jar 아티팩트 이름과는 별개로 안정적인 언어 수준의 모듈 이름("spring.core", "spring.context" 등)을 정의하는 "Automatic-Module-Name" 매니페스트 항목이 제공됩니다(예: "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 우산에서 엄선된 개별 사양과 통합됩니다:

스프링 프레임워크는 또한 애플리케이션 개발자가 스프링 프레임워크에서 제공하는 스프링 전용 메커니즘 대신 사용할 수 있는 의존성 주입(JSR 330) 및 공통 주석(JSR 250) 사양을 지원합니다. 원래 이러한 사양은 일반적인 자바스 패키지를 기반으로 했습니다.

Spring Framework 6.0부터 Spring은 기존 javax 패키지 대신 jakarta 네임스페이스를 기반으로 하는 Jakarta EE 9 수준(예: Servlet 5.0+, JPA 3.0+)으로 업그레이드되었습니다. EE 9를 최소로 하고 EE 10을 이미 지원하고 있는 Spring은 Jakarta EE API의 추가 진화를 위해 즉시 지원할 준비가 되어 있습니다. Spring 프레임워크 6.0은 웹 서버로서 Tomcat 10.1, Jetty 11 및 Undertow 2.3과 완벽하게 호환되며, Hibernate ORM 6.1과도 호환됩니다.

시간이 지남에 따라 애플리케이션 개발에서 Java/Jakarta EE의 역할은 진화해 왔습니다. J2EE와 Spring의 초기에는 애플리케이션을 애플리케이션 서버에 배포하기 위해 애플리케이션이 만들어졌습니다. 오늘날에는 Spring Boot의 도움으로 서블릿 컨테이너가 내장되어 있고 변경이 간편한 데브옵스 및 클라우드 친화적인 방식으로 애플리케이션이 만들어집니다. Spring Framework 5부터 WebFlux 애플리케이션은 Servlet API를 직접 사용하지 않으며, Servlet 컨테이너가 아닌 서버(예: Netty)에서도 실행할 수 있습니다.

Spring은 계속해서 혁신하고 진화하고 있습니다. Spring 프레임워크 외에도 Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch 등의 다른 프로젝트가 있습니다. 각 프로젝트에는 고유한 소스 코드 저장소, 이슈 트래커 및 릴리스 주기가 있다는 점을 기억하는 것이 중요합니다. Spring 프로젝트의 전체 목록은 spring.io/projects를 참조하세요.

Design Philosophy

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

  • 모든 수준에서 선택권을 제공하세요. Spring을 사용하면 설계 결정을 최대한 늦게 내릴 수 있습니다. 예를 들어, 코드를 변경하지 않고도 구성을 통해 지속성 공급자를 전환할 수 있습니다. 다른 많은 인프라 문제와 타사 API와의 통합도 마찬가지입니다.
  • 다양한 관점을 수용하세요. Spring은 유연성을 수용하며 작업 수행 방식에 대해 고집하지 않습니다. 다양한 관점의 광범위한 애플리케이션 요구 사항을 지원합니다.
  • 강력한 하위 호환성을 유지합니다. Spring의 진화는 버전 간에 큰 변화를 거의 강요하지 않도록 신중하게 관리되어 왔습니다. Spring은 엄선된 범위의 JDK 버전과 타사 라이브러리를 지원하여 Spring에 의존하는 애플리케이션과 라이브러리의 유지보수를 용이하게 합니다.
  • API 디자인에 대한 관심. Spring 팀은 직관적이고 여러 버전과 수년에 걸쳐 유지되는 API를 만들기 위해 많은 생각과 시간을 투자합니다.
  • 코드 품질에 대한 높은 기준을 설정합니다. Spring 프레임워크는 의미 있고 최신이며 정확한 자바독에 중점을 둡니다. 패키지 간에 순환 종속성이 없는 깔끔한 코드 구조를 주장하는 몇 안 되는 프로젝트 중 하나입니다.

Feedback and Contributions

방법 관련 질문이나 문제 진단 또는 디버깅이 필요한 경우 스택 오버플로를 사용하는 것이 좋습니다. 스택 오버플로에서 사용할 수 있는 추천 태그 목록을 보려면여기를클릭하세요. Spring 프레임워크에 문제가 있다고 확신하거나 기능을 제안하고 싶은 경우 GitHub 이슈를 사용하세요.

염두에 두고 있는 해결책이나 제안된 수정 사항이 있는 경우Github에 풀 리퀘스트를 제출할 수 있습니다. 하지만 아주 사소한 문제를 제외한 모든 문제는 이슈 트래커에 티켓을 제출하여 논의가 진행되고 나중에 참조할 수 있도록 기록을 남기는 것을 원칙으로 한다는 점을 유념하시기 바랍니다.

자세한 내용은 최상위 프로젝트 페이지의 기여하기에서 가이드라인을 참조하세요.

Getting Started

이제 막 Spring을 시작하려는 경우 Spring Boot 기반 애플리케이션을 만들어 Spring 프레임워크 사용을 시작할 수 있습니다. Spring Boot는 프로덕션에 바로 사용할 수 있는 Spring 기반 애플리케이션을 빠르게(그리고 자유롭게) 만들 수 있는 방법을 제공합니다. 이 방법은 Spring 프레임워크를 기반으로 하며, 구성보다 규칙을 선호하며, 가능한 한 빨리 시작하고 실행할 수 있도록 설계되었습니다.

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

 

반응형
profile

while(1) work();

@유호건

❤️댓글은 언제나 힘이 됩니다❤️ 궁금한 점이나 잘못된 내용이 있다면 댓글로 남겨주세요.

검색 태그