스프링 프레임워크
Spring Framework는 가장 널리 사용되는 Java EE 프레임워크 중 하나입니다. 이 기사에서는 다음에 대해 알아볼 것입니다.
- 스프링 프레임워크 아키텍처
- Spring의 핵심 구성요소
- 스프링 프레임워크 산하의 다양한 프로젝트
Spring Framework, Servlet, JSP 및 JSF에 대한 Google Trends 차트를 살펴보았습니다. Spring이 다른 모든 Java EE 기술보다 훨씬 앞서 있다는 것은 분명합니다.
스프링 프레임워크란?
Spring은 Java Enterprise Edition에서 가장 널리 사용되는 프레임워크 중 하나입니다. 전 세계의 개발자들은 신뢰할 수 있는 고품질 애플리케이션을 개발하기 위해 Spring을 사용합니다. 스프링 프레임워크는 Rod Johnson이 설계했습니다. 그 이후로 Spring은 EJB 모델을 위한 Java 세계의 대체 기술이 되었습니다. 스프링 프레임워크를 사용하여 다양한 종류의 애플리케이션을 만들 수 있습니다.
스프링 핵심 개념 - DI, IoC, AOP
- Inversion of Control이 무엇인지 이해하지 않고 Spring Framework가 무엇인지 이해하는 것은 불가능합니다. DI라고도 하는 종속성 주입은 IoC(Inversion of Control) 유형 중 하나입니다.
- 제어 역전(Inversion of Control) - 프로그램의 객체가 다른 객체의 구체적인 구현에 의존하지 않지만 차후 상호 작용을 위해 추상화(인터페이스)에 대한 지식을 가질 수 있는 객체 지향 프로그래밍의 원칙입니다.
- 의존성 주입 - 애플리케이션의 각 기능에 대해 인터페이스에 의해 알려진 다른 개체(종속성)를 사용해야 할 수 있는 조건부 독립 개체(서비스)가 있는 구조적 디자인 패턴의 구성입니다. . 종속성은 생성 시 서비스로 전송(구현)됩니다. 이것은 한 클래스의 요소를 다른 클래스에 도입하는 상황입니다. 실제로 DI는 생성자에 매개변수를 전달하거나 세터를 사용하여 구현됩니다. 이 접근 방식을 구현하는 라이브러리를 IoC 컨테이너라고도 합니다.
- 측면 지향 프로그래밍 - 애플리케이션에서 크로스 스루(기능) 기능을 구별할 수 있는 프로그래밍 패러다임입니다. 여러 애플리케이션 노드에 걸쳐 있는 이러한 기능을 교차 편집 문제라고 하며 이러한 교차 메모는 애플리케이션의 즉각적인 비즈니스 논리와 분리됩니다. OOP에서 키 단위는 클래스이고 AOP에서 키 요소는 애스펙트입니다. DI는 애플리케이션 클래스를 별도의 모듈로 분리하는 데 도움이 되며 AOP는 영향을 받는 개체에서 교차 절단 문제를 분리하는 데 도움이 됩니다.
스프링 프레임워크 아키텍처
Spring Framework 핵심 구성 요소
Spring의 Core 컨테이너는 SpEL, Context, Core, Beans의 네 가지 모듈로 구성됩니다. 이러한 요소에 대한 설명은 다음과 같습니다.
- SpEL 모듈은 실행 중에 개체를 조작하기 위한 강력한 표현 언어를 제공합니다.
- 컨텍스트는 Beans 및 Core를 기반으로 구축되며 설정에 정의된 모든 개체에 액세스할 수 있습니다. Context 모듈의 핵심 요소는 ApplicationContext 인터페이스입니다.
- Core 모듈은 IoC 및 DI 속성을 포함하여 프레임워크의 핵심 부분을 제공합니다.
- Bean 모듈은 Spring Beans의 생성 및 관리를 담당하며 애플리케이션 컨텍스트 구조 단위입니다.
스프링 프레임워크 웹
Spring 프레임워크 웹 레이어는 Web, Web-MVC, Web-Socket, Web-Portlet 등으로 구성된다.
- 웹 모듈은 파일 다운로드, 웹 애플리케이션 생성, 웹 서비스 휴식 등의 기능을 제공합니다.
- Web-MVC는 웹 애플리케이션을 위한 Spring MVC 구현을 포함합니다.
- Web-Socket은 웹 애플리케이션에서 Web-Socket을 사용하여 클라이언트와 서버 간의 통신을 지원합니다.
- Web-Portlet은 포틀릿 환경에서 MVC 구현을 제공합니다.
스프링 프레임워크 데이터 액세스
데이터 액세스/통합 컨테이너는 JDBC, ORM, OXM, JMS 및 트랜잭션 모듈로 구성됩니다.
- JDBC는 JDBC의 추상 계층을 제공하며 개발자가 데이터베이스 연결과 관련된 단조로운 코드를 수동으로 등록할 필요가 없습니다.
- Spring ORM은 JPA 구현인 Hibernate, JDO와 같은 널리 사용되는 ORM과의 통합을 제공합니다.
- OXM 모듈은 Object/XML - XMLBeans, JAXB 등을 연결하는 역할을 합니다.
- JMS(Java Messaging Service) 모듈은 메시지 생성, 전송 및 수신을 담당합니다.
- 트랜잭션은 특정 메서드 및 POJO를 구현하는 클래스에 대한 트랜잭션 관리를 지원합니다.
기타 모듈
Spring에는 AOP, Aspects, Instrumentation, Messaging 및 Test와 같은 다른 중요한 모듈도 포함되어 있습니다.
- AOP는 관점 지향 프로그래밍을 구현하고 AOP 기능의 전체 무기고를 사용할 수 있습니다.
- Aspects 모듈은 강력한 AOP 프레임워크이기도 한 AspectJ와의 통합을 제공합니다.
- Instrumentation은 서버 애플리케이션에서 사용되는 클래스 계측 및 클래스 로더를 지원합니다.
- 메시징 모듈은 STOMP 지원을 제공합니다.
- 마지막으로 테스트 모듈은 TestNG 또는 JUnit 프레임워크를 사용하여 테스트를 제공합니다.
봄 5 기능
Spring 5는 Spring 4에 대대적인 업데이트를 가져왔습니다. Spring 5의 중요한 기능 중 일부는 다음과 같습니다.
- Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0 및 JPA 2.2 지원. Spring이 사용 중인 주요 기술의 최신 버전을 따라잡으려고 노력하는 것을 보니 기쁩니다.
- 새 모듈인 spring-jcl로 향상된 로깅
- 파일 작업은 NIO 2 스트림을 사용하므로 성능이 향상됩니다.
- Spring MVC 컨트롤러 메서드의 반환 값으로 Reactor 3.1 Flux 및 Mono와 RxJava 1.3 및 2.1을 지원합니다.
- Jackson 및 GSON의 대안으로 Kotlin, Project Lombok, JSON 바인딩 API를 지원합니다.
- Spring WebFlux - Spring이 반응성을 가져옵니다.
- JUnit 5 지원
- Kotlin을 통한 함수형 프로그래밍 지원
GitHub 리포지토리에서 Spring 프로젝트를 확인할 수 있습니다.
참조: 스프링 참조 문서