개발자 키우기
https://docs.spring.io/spring-framework/reference/overview.html 본문
스프링 프레임워크 개요
스프링은 쉽게 자바 산업용 애플리케이션을 제작하는 것을 도와준다. 스프링은 JVM을 대신할 언어인 코틀린과 그로브에 대한 지원, 산업용 환경에서 자바 언어를 수용하는 것에 필요한 모든 것을 제공한다. 그리고 애플리케이션이 필요한 것을 다양한 종류의 아키텍처를 생성할 수 있는 유연성도 제공한다. 스프링 프레임워크 6.0은 자바 17 버전 이상을 요구한다.
스프링은 광범위한 애플리케이션의 다양한 시나리오를 지원한다. 대규모 사업에서 애플리케이션은 종종 오랜 기간 존재하고 개발자의 통제를 벗어난 JDK나 애플리케이션 서버 업데이트 주기를 가진다. 다른 것들은 클라우드 환경에서 서버가 내장된 하나의 JAR로 실행될 수도 있다. 또 다른 것들은 서버가 필요 없는 독립형 애플리케이션(예시:배치나 통합작업) 일 수도 있다.
스프링은 오픈 소스이다. 오픈 소스는 다양한 범위의 실 사용 사례에 기반한 피드백을 계속 제공하는 크고 활발한 커뮤니티를 가지고 있다. 오픈 소스는 스프링이 성공적으로 아주 오랜 시간 동안 진화하는데 도움이 되었다.
"스프링" 이 의미하는 것
"스프링" 이라는 용어는 다른 맥락에 따라 다른 것을 의미한다. 이것은 모든 것이 시작되는 스프링 프레임워크 프로젝트 그 자체를 참조하는 데 사용될 수 있다. 시간이 지남에 따라 다른 스프링 프로젝트는 스프링 프레임워크의 기반으로 만들어졌다. 가장 자주 사람들은 "스프링"을 프로젝트의 전체 구성을 의미한다. 이 참조 문서는 스프링 프레임워크 그 자체를 기반으로 중점을 둔다.
스프링 프레임워크는 모듈로 나뉘어져있다. 애플리케이션이 원하는 모듈을 정할 수 있다. 핵심은 설정 모델과 의존성 주입 방법을 포함한 중심 컨테이너의 모듈이다. 그 외에도, 스프링 프레임워크는 메시지, 트렌잭션 데이터, 지속성, 웹을 포함한 다른 애플리케이션 아키텍처를 기본적으로 지원한다. 또한 서블릿기반인 스프링 MVC 웹 프레임워크와 평행하여 스프링 웹플럭스 반응형 왭 프레임워크도 포함되어 있다.
모듈의 참고사항 : 스프링의 프레임워크 jar은 JDK 9 버전의 모듈 경로 ("Jigsaw")에 배포를 허용한다. Jigsaw 지원 애플리케이션을 사용하기 위해서는 스프링 프레임워크 5 jar에는 안정적인 언어래밸의 모듈 이름 ("spring.core", "spring.context" 등) 독립적인 jar 이름이 jar의 명백한 항목인 "자동 모듈 이름"이 와야 한다.(jar는 "-" 대신에 "." 이나 "spring-core"나 "spring-context"와 같은 이름 패턴을 따른다) 당연히 스프링의 프레임워크 jar은 클래스패스 JDK8, 9 모두 잘 작동한다.
스프링과 스프링 프레임워크의 역사
스프링은 초기 J2EE 사양의 복잡함에 대응으로 2003년에 생겨났다. JAVA EE와 최신 후속인 Jakarta EE는 스프링과 경쟁 관계라고 생각하지만, 사실은 상호 보완적이다. 스프링 프로그래밍 모델은 Jakarta EE의 플랫폼 사양을 지원하지 않는다. 오히려, 스프링은 전통적인 EE 우산에서 신중히 선택한 개인 사양을 통합된다.
서블릿 API(JSR 340)
웹소켓 API(JSR 356)
동시성 개체(JSR 236)
JSON Binding API(JSR 367)
Bean 검증(JSR 303)
JPA(JSR 338)
JMS(JSR 914)
게다가 필요하다면 트렌잭션 조정을 위한 JTA/JCA 설정
스프링 프레임워크는 또한 애플리케이션 개발자들이 스프링 프레임워크가 제공하는 스프링과 관련된 메커니즘을 대신해서 선택하여 사용하는 어노테이션 사양과 의존성 주입을 지원한다. 원래는 공통 javax 패키지에 기반한다.
스프링 프레임워크 6.0처럼 스프링은 전통적인 javax 패키지를 대신하여 jakarta 네임스페이스 기반하에 Jakarta EE 9 버전(예를 들어 서블릿 5.0이상, JPA 3.0 이상)으로 업그레이드되었다. 최소 EE 9와 EE 10은 이미 지원됨에 따라 스프링은 jakarta EE API의 더 나은 발전을 위한 도움을 즉시 제공할 준비가 되었다. 스프링 프레임워크 6.0은 톰캣 10.1, 제티 11 그리고 웹서버인 Undertow 2.3 그리고 또한 하이버네이트 ORM 6.1이 충분히 호완 가능하다.
시간이 지남에 따라, 애플리케이션 개발에서 자바/Jakarta EE의 역할이 발전되었다. J2EE와 스프링 초기에는 애플리케이션은 애플리케이션 서버에 배포되기 위해 생성되었다. 오늘날, 스프링부트의 도움으로 애플리케이션은 데브옵스와 클라우드 친화적인 방법으로 내장된 서블릿 컨테이너와 변경하기 쉽게 생성된다. 스프링 프레임워크 5부터 WebFlux 애플리케이션은 더이상 서플릿 API를 바로 사용할 수 없고 서블릿 컨테이너가 아닌 서버에서 동작할 수 있다(네티와 같이).
스프링은 혁신과 발전을 계속한다. 게다가 스프링 프레임워크는 스프링부트, 스프링 보안, 스프링 데이터, 스프링 클라우드, 스프링 배치 등과 같은 여러 프로젝트가 있다. 이것은 자신의 소스 코드 저장소, 이슈 추적기 그리고 릴리즈 흐름을 가지고 있는 각 프로젝트를 기억하는데 중요하다. 스프링 프로젝트의 완벽한 리스트를 위해 spring.io.projects를 보아라.
디자인 철학
프레임워크를 배울 때 이게 무엇인지보다 어떤 원칙을 따르는지 아는 것이 중요하다. 여기에 스프링 프레임워크 가이드 원칙이 있다.
모든 래밸 선택권을 제공한다. 스프링은 디자인 결정을 최대한 늦게 연기하도록 한다. 예를 들어 코드 변화없이 설정을 통해 지속적 공급자를 변경 시킬 수 있다. 다른 많은 인프라 문제와 타사 API와의 통합에서도 마찬가지다.
다양한 관점들을 수용하다. 스프링은 유연성을 포용하고 어떻게 그것을 끝마쳐야하는지에 대하여 강하게 주장하지 않는다. 다른 관점에서 폭넓은 애플리케이션의 요구를 지원한다.
강한 하위 호완성을 유지한다. 스프링의 진화는 버전 사이에서 몇몇의 강력한 변화가 강제적으로 조심스럽게 관리되었다.
Copyright © 2002 - 2023 VMware, Inc. All Rights Reserved.
'ENGLISH' 카테고리의 다른 글
https://docs.spring.io/spring-framework/reference/ (0) | 2023.10.19 |
---|