스프링 개념, 등장배경, 장점, 단점에 대해서 알아보겠습니다. 이러한 사항을 미리 숙지하고 스프링 시작한다면 스프링에 대한 높은 이해도와 흥미가 생길 것입니다.
스프링이란
스프링(Spring)은 Java 애플리케이션 개발을 위한 오픈 소스 프레임워크입니다. 애플리케이션 구축을 위한 포괄적인 인프라를 제공하고 설계에서 배포에 이르는 전체 개발 수명 주기 동안 개발자를 지원합니다.
애플리케이션 구축을 위한 일관된 프로그래밍 모델을 제공하고 모듈성을 촉진하여 개발자가 느슨하게 결합된 애플리케이션을 구축할 수 있도록 합니다. 또한 데이터 액세스, 보안, 트랜잭션 관리 등의 기능을 제공합니다.
등장배경
왜 등장했을까? Spring은 2003년 Rod Johnson이 처음 개발했으며 Apache 2.0 라이선스로 출시되었습니다. 이 프레임워크의 주요 목표는 무겁고 모놀리식인 Java EE 프레임워크에 대한 경량 및 모듈식 대안을 제공하여 Java Enterprise Edition(Java EE) 개발을 단순화하는 것이었습니다.
수년에 걸쳐 Spring은 진화하고 확장되어 가장 널리 사용되는 Java 개발 프레임워크 중 하나가 되었으며 Java SE, Java EE 등을 비롯한 여러 플랫폼을 지원합니다.
현재 Spring은 VMware의 자회사인 Pivotal의 Spring 프레임워크 팀에서 유지 관리합니다. 모듈성, 사용 용이성 및 포괄적인 기능 세트로 인해 엔터프라이즈급 애플리케이션, 마이크로서비스 및 웹 애플리케이션을 구축하는 데 널리 사용되는 선택입니다.
스프링 사용이유
Spring 프레임워크는 Java 애플리케이션 개발에 많은 이점을 제공하며 사용이유는 다음과 같습니다.
- 경량(Lightweight) : Spring 프레임워크는 가볍고 많은 메모리나 처리 능력을 필요로 하지 않으므로 배포 및 확장이 용이합니다.
- 모듈식: 프레임워크는 모듈형으로 설계되어 필요한 모듈만 사용할 수 있어 유연하고 사용하기 쉽습니다.
- 제어의 역전(Inversion of Control, IoC) : 스프링은 Inversion of Control(IoC) 설계 패턴을 사용하여 객체 간 종속성을 보다 쉽게 관리하고 구성 요소 간의 결합을 줄입니다.
- 종속성 주입(DI): Spring의 DI 기능은 개체에 종속성을 주입하는 프로세스를 단순화하여 코드를 더 쉽게 관리하고 유지 관리할 수 있도록 합니다.
- AOP(Aspect-Oriented Programming) : Spring의 AOP 기능을 사용하면 로깅, 보안 및 트랜잭션 관리와 같은 교차 관심사를 모듈화 하여 코드 유지보수성을 향상하고 중복을 줄일 수 있습니다.
- 통합 : Spring은 Hibernate, JPA 및 JDBC와 같은 인기 있는 기술과의 원활한 통합을 제공하여 데이터베이스 작업을 더 쉽게 합니다.
- Testing : Spring은 테스트에 대한 강력한 지원을 제공하므로 테스트에 소요되는 비용과 시간을 줄일 수 있습니다.
전반적으로 Spring 프레임워크는 유연성, 모듈화, 손쉬운 종속성 관리, 다른 기술과의 원활한 통합 등 개발자에게 여러 가지 이점을 제공하므로 엔터프라이즈급 애플리케이션 개발에 널리 사용됩니다.
단점
Spring 프레임워크의 단점은 다음과 같습니다.
- 가파른 학습 곡선 : Spring은 많은 기능을 가진 복잡한 프레임워크이며 새로운 개발자가 모든 구성 요소를 배우고 이해합니다.
- 구성 오버헤드 : Spring은 시간이 많이 걸리고 오류가 발생하기 쉬운 구성에 크게 의존합니다.
- 성능 오버헤드 : Spring은 가볍게 설계되었지만 프레임워크를 사용하면 특히 시작 시간과 관련하여 애플리케이션에 약간의 성능 오버헤드를 추가할 수 있습니다.
- 오버엔지니어링 : Spring의 포괄적인 기능 세트는 때때로 오버엔지니어링으로 이어져 지나치게 복잡하고 유지 관리하기 어려운 애플리케이션이 될 수 있습니다.
- 자세한 정보 표시 : 구성 사용 XML 기반 메타데이터는 장황하고 읽기 어려운 코드로 이어질 수 있습니다.
- 외부 라이브러리에 대한 의존성 : Spring은 많은 외부 라이브러리에 의존하므로 관리하기가 더 어려워질 수 있습니다. 의존성 호환성 문제의 위험이 증가합니다.
Spring을 사용하기로 선택할 때 특히 특정 성능 또는 리소스 제약이 있는 프로젝트에서 이러한 단점을 신중하게 고려해야 합니다.
'SPRING > 개념' 카테고리의 다른 글
[ 개념 ] 스프링 AOP 프록시(proxy)란? 예제 장점 단점 (0) | 2023.03.01 |
---|---|
[ 개념 ] 스프링 MVC란? 구조 (0) | 2023.02.12 |
[ 개념 ] 스프링(spring) AOP란 어노테이션 어드바이스 (0) | 2023.02.10 |
[ 개념 ] 스프링 IOC 컨테이너란? DI 사용이유 작동방식 (0) | 2023.02.10 |
[ 개념 ] 스프링(spring)이란? 사용이유 IOC DI AOP (0) | 2021.05.30 |
댓글