https://docs.spring.io/spring-framework/reference/overview.html
이 참조 문서는 기초인 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 모두에서 classpath에서 잘 작동합니다.
Spring Programming model은 전통적 Java EE에서 엄선된 개별 사양과 통합됩니다.
Spring Framework는 또한 애플리케이션 개발자가 Spring Framework에서 제공하는 Spring 특정 메커니즘 대신 사용하도록 선택할 수 있는 종속성 주입(Dependency Injection)( JSR 330 ) 및 공통 어노테이션(Common Annotation)( 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의 추가 발전을 위한 기본 지원을 제공할 준비가 되었습니다. 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를 참조하십시오.
다음은 Spring Framework의 기본 원칙입니다.