1. Spring이란?

Spring makes Java simple.
Level up your Java code and explore what Spring can do for you.
spring.io
Spring Framework
- 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크
(프레임워크 -> 이전 글 참조)
- 간단히 스프링(Spring)이라고도 함
- 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공함
- 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로써 쓰이고 있음
- Spring Version
- 1.0 : 2004년 3월
- 2.0 : 2006년 10월
- 2.5 : 2007년 11월
- 3.0 : 2009년 12월
- 3.1 : 2011년 12월
- 4.0 : 2013년 12월
- 5.0 : 2017년 9월
2. Spring의 특징
1) 경량 컨테이너
- 컨테이너 : 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하는 독립적인 존재
- Spring은 경량 컨테이너로서 자바 객체를 직접 관리함
- 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리함
- Spring으로부터 필요한 객체를 얻어올 수 있음
2) POJO(Plain Old Java Object) 방식
- POJO : 간단하고 가벼운 순수 객체
- 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가벼움
3) 제어의 반전(Inversion of Control, IOC) 지원
- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출함
(제어의 반전 -> 이전 글 참조)
4) 의존성 주입(Dependency Injection, DI) 지원
- DI : 하나의 객체가 다른 객체의 의존성을 제공하는 기술
- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜줌
5) 관점 지향 프로그래밍(Aspect-Oriented Programming, AOP) 지원
- AOP : 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하는 프로그래밍 기법
- 여러 모듈에서 공통적으로 사용하는 기능의 경우, 해당 기능을 분리하여 관리할 수 있음
6) 영속성과 관련된 서비스 지원
- Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공
7) MVC(Model-View-Controller) 패턴
- 웹 프로그래밍 개발 시 거의 표준적인 방식인 Spring MVC라 불리는 모델-뷰-컨트롤러(MVC) 패턴을 사용
3. Spring의 구조

- 각각의 구조에 대해서는 다음 포스팅부터 천천히 공부해보려고 함
4. 왜 Spring을 사용하는가?
1) 유연성
- 제어의 역전(IoC)와 의존성 주입(DI)을 이용하여 유연하고 포괄적인 애플리케이션을 구축할 수 있음
2) 생산성
- 자바 애플리케이션을 개발하는데 필요한 하부구조(infrastructure)을 포괄적으로 제공
- 개발자는 애플리케이션 핵심 로직에 집중할 수 있어 생산성이 증대됨
- 재사용 및 유지 보수가 용이함
- 높은 확장성을 가짐
3) 신뢰성
- 전 세계에서 쓰이고 있음
- 특히, 대한민국의 전자 정부 표준 프레임워크는 Spring 기반임
- Security 기능을 제공하여 기본적으로 안전하고 신뢰할 수 있는 솔루션을 제공함
4) 교육적 차원
- 소프트웨어를 개발하는데 있어 프레임워크 기반으로 접근하는 것은 좋은 프로그래밍 습관을 형성할 수 있음
- 소프트웨어 공학의 주요 설계 패턴을 경험할 수 있음
'공부 > Spring' 카테고리의 다른 글
[Spring-01] 라이브러리와 프레임워크의 차이점 (0) | 2021.05.17 |
---|