스프링 프레임워크(Spring Framework)
스프링프레임워크는 JavaEE에 비해 더 높은 생산성, 유연성, 성능 향상 등을 제공하여 대규모 엔터프라이즈 애플리케이션을 개발하기에 적합한 특징을 가지고 있습니다.
JavaEE란?
자바를 기반으로 하는 서버 애플리케이션 개발을 위한 표준 플랫폼입니다.
엔터프라이즈 애플리케이션 개발에 필요한 다양한 서비스와 라이브러리를 포함하고 있는 플랫폼으로 다음과 같은 기술과 단점을 가지고 있습니다.
Java EE의 주요 컴포넌트 및 기술
- Servlets: 웹 애플리케이션을 위한 자바 컴포넌트로 HTTP 요청과 응답을 처리하는 역할을 합니다.
- JSP(JavaServer Pages): 동적 웹 페이지를 생성하기 위한 템플릿 엔진입니다.
- EJB(Enterprise JavaBeans): 엔터프라이즈 애플리케이션의 비즈니스 로직을 컴포넌트화하고 관리하는데 사용합니다.
- JPA(Java Persistence API): 데이터베이스와의 상호작용을 위한 ORM기술을 제공합니다.
- JSF(JavaServer Faces): 웹 애플리케이션의 사용자 인터페이스를 구축하기 위한 UI컴포넌트와 이벤트 모델을 제공합니다.
Java EE의 단점
- 복잡성: Java EE는 많은 API와 설정을 필요로 하기 때문에 초보자들에게는 학습 곡선이 높습니다.
- 무서움: Java EE 애플리케이션은 일반적으로 무겁고 자원을 많이 사용합니다.
- 느린 개발주기: Java EE 애플리케이션을 개발하고 테스트하는데 시간이 Spring에 비해 더 오래걸립니다.
- 벤더 종속성: 특정 Java EE 구현에 종속되는 경우가 많아서 플랫폼 간 이식성이 제한될 수 있습니다.
이러한 Java EE의 특징에 비해 Spring의 다음과 같은 장점이 있습니다.
Spring의 장점
- 경량 컨테이너: Srping은 더 가볍고 빠른 컨테이너를 제공합니다.
- 간결한 설정: Spring은 XML, 어노테이션, Java기반 설정 등 다양한 설정 방식을 지원하여 개발자가 더 간편하게 애플리케이션을 구성할 수 있습니다.
- 풍부한 모듈화: Spring은 다양한 모듈을 제공하여 데이터 액세스, 보안, 트랜잭션 관리 등 다양한 측면에서 애플리케이션을 지원합니다.
- 테스트용이성: Spring은 TDD(테스트 주도 개발)을 촉진하고 단위,통합 테스트를 쉽게 수행할 수 있도록 도와줍니다.
- 벤더 중립성: Spring은 특정 벤더에 종속되지 않으며, 여러 Java EE구현과 함께 사용할 수 있습니다.
Spring의 특징
1. IOC(Inversion of Control - 제어의 역행)
IOC는 객체 지향 프로그래밍에서의 제어 흐름을 바꾸는 개념입니다. 일반적으로 객체 간의 의존성을 관리하고 생성하는 부분은 개발자가 제어합니다. 그러나 IOC에서는 이 제어권이 프레임워크 또는 컨테이너에게 넘어갑니다.
Spring의 IOC 컨테이너는 개발자가 직접 객체를 생성하고 관리하는 대신, 객체의 생명주기를 관리하고 필요한 객체를 주입해주는 역할을 합니다. 이로써 코드의 결합도를 낮추고 유연성을 높입니다.
2. DI (Dependency Injection - 의존성 주입):
DI는 IOC의 구현 방식 중 하나로, 객체 간의 의존성을 외부에서 주입해주는 개념입니다. 즉, 객체가 필요로 하는 의존 객체를 직접 생성하는 것이 아니라 외부에서 주입받게 됩니다.
Spring에서는 주로 생성자 주입, 세터 주입, 필드 주입 등 다양한 방식으로 의존성을 주입할 수 있으며, 이를 통해 코드의 테스트 용이성과 재사용성을 높일 수 있습니다.
AOP (Aspect-Oriented Programming - 관점 지향 프로그래밍):
AOP는 핵심 비즈니스 로직과 별도로 관심사(Concerns)를 모듈화하고 분리하는 프로그래밍 패러다임입니다. 이 관심사는 애플리케이션 전체에서 공통적으로 발생하는 로깅, 트랜잭션 관리, 보안 등과 같은 부가적인 기능을 나타냅니다.
이러한 IOC, DI, AOP는 Spring 프레임워크의 핵심 개념으로, 코드의 모듈화, 유지 보수성, 확장성을 향상시키고, 중복 코드를 제거하며, 복잡한 애플리케이션에서 관심사를 분리하여 개발과 유지보수를 더 쉽게 만듭니다.
'Programming > Spring' 카테고리의 다른 글
| [Spring] MVC패턴 Date형식 지정하기 (0) | 2023.08.07 |
|---|---|
| Spring과 Spring Boot의 초기셋팅 순서 (0) | 2023.08.04 |
| [Spring] 이클립스 Java 버전 맞춰주기, (0) | 2023.08.04 |
| [Spring] Maven, HikariCP, lombok 다운로드 및 적용 방법 (0) | 2023.08.04 |
| Spring STS 설치하기 (0) | 2023.08.03 |