1. 스프링 프레임워크 개요
로드 존슨 ( Rod Johnson ) 이 자신의 Java 개발 경험과 노하우를 기반으로 저술한 책
《Export One-on-One: J2EE Design and Development》에서 스프링 프레임워크(Spring Framework)의 전신이 되는
초기의 프레임워크를 설명했는데
추후에 핸재의 개발 리더인 유겐 할러(Juergen Hoeller) 와 얀 카로프(Yann Caroff)가 합류하면서
J2EE의 겨울 뒤에 봄이온다는 의미로 얀 카로프가 "Spring Framework"로 명칭을 제안했다
스프링 프레임워크라는 이름으로 아파치 라이선스를 따르는 오픈소스 프로젝트가 됐다.
스프링 프레임워크는
2004년 버전 1.0
2006년 버전 2.0
2009년 버전 3.0
2013년 버전 4.0
2017년 버전 5.0 이 발표됐다
( 필자는 버전 3.0을 이용해 공부한다 )
2. 스프링 프레임워크(Java Spring Framework)?
- 자바 엔터프라이즈 애플리케이션 개발에 사용되는 오픈 소스(Open Source) 애플리케이션 프레임워크
- 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록 틀과 공통 프로그래밍 모델, 기술 API 등을 제공
- java 어플리케이션 설계, 구현, 테스트, 운영(유지보수) 전반에 대한 기반(infrastructure)를 제공
- 생산성과 유지보수성 향상을 위한 다양한 인프라를 지원
(참고로 인프라란 다양한 라이브러리 및 디자인패턴을 지원)
- 프레임워크는 반완전한 어플리케이션이다.
(개발자는 비지니스 로직에 집중할 수 있도록 기반을 제공하는 것이 프레임워크의 목적)
3. 스프링 프레임워크의 특징
① 경량 컨테이너
- "경량 컨테이너"(크기와 부하의 측면)로서 자바 객체를 직접 관리각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
② 제어 역전(역행/반전) ( IoC : Inversion of Control)
- 인스턴스를 제어하는 제어권이 역전된다는 것
(메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미)
(컴포넌트를 구성하는 인스턴스 생성과 의존 관계 연결처리를 IoC 컨테이너에 위임)
- 애플리케이션의 느슨한 결합을 도모
- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출
③ 의존성 주입 ( DI : Dependency Injection )
- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다
④ 관점지향 프로그래밍 ( AOP : Aspect - Oriented Programming )
- 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리 가능
⑤ 트랜잭션 관리 프레임워크
- 추상화된 트랜잭션 관리를 지원, 설정파일(xml, java, property 등)을 이용한 선언방식 및 프로그래밍을 통한 방식을 모두 지원
⑥ MVC 패턴
- DispatcherServlet이 Controller 역할을 담당하여 각종 요청을 적절한 서비스에 분산, 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있음
⑦ 배치 프레임워크
- 스프링은 특정시간대에 실행하거나 대용량의 자료를 처리하는데 쓰이는 일괄처리(Batch Processing)을 지원하는 배치 프레임워크를 제공
- 기본적으로 스프링 배치는 Quartz 기반으로 동작
⑧ 단순함
- 스프링은 단순하고 명쾌한 접근방법을 이용.
- 스프링이 강력히 주장하는 것은 단순한 객체지향적 개발 모델링은 POJO 프로그래밍
⑨ 유연성
- 유연성과 확장성이 매우 뛰어남
- 스프링의 유연성으로 인해 스프링은 많은 프레임워크와 편리하게 접목돼서 사용될 수 있다
⑩ 서비스 추상화
- 환경이나 서버, 특정 기술에 종속 X, 이식성이 뛰어남, 유연한 애플리케이션을 만들 수 있음
참고
- 오픈소스(Open Source)
소프트웨어(S/w) 혹은 하드웨어의(H/W) 제작자의 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어, 오픈 소스 라이선스에 준하는 모든 통칭을 일컫는다. (소스가 공개되어 여러 개발자가 플랫폼을 함께 개발, 구축, 보완해 나가는 시스템. )
- 프레임워크(Framework)
개발할 때 설계 기본이 되는 뼈대나 구조 / 환경 (문제 영역을 해결한 재사용, 확장 가능한 라이브러리)
- API ( Application Programming Interface )
응용 프로그램을 개발하기 위해 제공하는 인터페이스
(라이브러리, 컴포넌트 : 실제 카카오에서 만든 클래스를 내가 가지고 있음)
(API : 인터페이스만 제공해줌)
- 모듈화
소프트웨어를 각 기능별로 분할하여 설계 및 구현하는 기법
출처: https://goddaehee.tistory.com/156 [갓대희의 작은공간]
'Java > Spring' 카테고리의 다른 글
[Spring] Bean 설정, 컴포넌트 스캔(Component Scan) (0) | 2021.06.01 |
---|---|
[Spring/MyBatis] MyBatis? (0) | 2021.05.28 |
[Spring] 스프링 AOP(관점지향 프로그래밍, Aspect-Oriented-Programming) (1) | 2021.05.24 |
[Spring] Maven? (0) | 2021.05.23 |
[Spring] IoC (제어 역전, Inversion Of Control) / DI (의존성 주입, Dependency Injection) (0) | 2021.05.20 |
댓글