#001 – 스프링 프레임워크 소개

[스프링 프레임워크란?]

”Spring Framework은 엔터프라이즈급 애플리케이션을 만들기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다.”

“JEE(Java Enterprise Edition)가 제공하는 다수의 기능을 지원하고 있기 때문에, JEE를 대체하는 프레임워크로 자리잡고 있다.”

“실제로 Spring 프레임워크는 JEE가 제공하는 다양한 기능을 제공하는 것 뿐만 아니라, DI(Dependency Injection)나 AOP (Aspect Oriented Programming)와 같은 기능도 지원 한다.

1. 경량컨테이너

– 스프링은 자바객체를 담고 있는 컨테이너이다. 스프링 컨테이너는 이들 자바 객체의 생성과 소멸과 같은 라이프사이클을 관리하고, 언제든지 스프링 컨테이너로 부터 필요한 객체를 가져와 사용할 수 있다.

2. DI(Dependency Injection – 의존성 지원) 패턴 지원

– 스프링은 설정파일이나, 어노테이션을 통해서 객체간의 의존 관계를 설정할 수 있다. 따라서, 객체는 의존하고 있는 객체를 직접생성하거나 검색할 필요가 없다.

3. AOP(Aspect Oriented Programming – 측면 지향 프로그래밍) 지원

– AOP 는 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법이다. 이는 문제를 해결하기 위한 핵심관심 사항과 전체에 적용되는 공통관심 사항을 기준으로 프로그래밍 함으로서 공통모듈을 여러 코드에 쉽게 적용할 수 있도록 한다. 스프링은 자체적으로 프록시 기반의 AOP를 지원하므로 트랜잭션이나, 로깅, 보안과 같이 여러 모듈에서 공통으로 필요로 하지만 실제 모튤의 핵심은 아닌 기능들을 분리하여 각 모듈에 적용이 가능하다.

4. POJO(Plain Old Java Object – 특정 인터페이스 또는 클래스를 상속하지 않는 일반 자바 객체) 지원

– POJO는 일반적인 자바 객체를 말한다. 스프링 컨테이너에 저장되는 자바객체는 특정한 인터페이스를 구현 하거나, 클래스 상속 없이도 사용이 가능하다. 일반적인 자바 객체를 칭하기 위한 별칭 개념이다.

5. IoC(Inversion of Control – 제어의 반전)

– IoC는 스프링 프레임워크가 갖고 있는 핵심적인 기능이다. 본디 자바의 객체 생성 및 의존관계에 있어 모든 제어권은 개발자에게 있었다. 하지만, 서블릿과 EJB가 나타나면서 기존의 제어권이 서블릿 컨테이너 및 EJB컨테이너에게 넘어가기 된다. 하지만 모든 객체의 제어권이 넘어간 것은 아니고 서블릿, EJB에 대한 제어권을 제외한 나머지 객체 제어권은 개발자들이 담당하고 있다. 스프링 프레임워크에서도 객체에 대한 생성과 생명주기를 관리할 수 있는 기능을 제공하고 있는데 이런 이유로 스프링 컨테이너[Spring Container] 또는 IoC 컨테이너 라고 부르기도 한다.

6. 스프링은 트랜젝션 처리를 위한 일관된 방법을 제공한다

– JDBC를 사용하든 JTA를 사용하든, 또는 컨테이너가 제공하는 트랜젝션을 사용하든, 설정파일을 통해 트랜젝션 관련정보를 입력하기때문에 트랜젝션 구현에 상관 없이 동일한 코드를 여러 환경에서 사용이 가능하다.

7. 스프링은 영속성과 관련된 다양한 API를 지원한다.

– 스프링은 JDBC를 비롯하여 iBatis, 하이버네이트, JPA등 DB처리를 위해 널리 사용되는 라이브러리와 연동을 지원하고 있다.

8. 스프링은 다양한 API에 대한 연동을 지원한다.

– 스프링은 JMS, 메일, 스케쥴링등 엔터프라이즈 어플리케이션 개발에 필요한 다양한 API를 설정파일과 어노테이션을 통해서 손쉽게 사용할 수 있도록 지원하고 있다.

 

[스프링 프레임워크 모듈 구성]

Spring Framework Modules

1. Spring Core

– Spring Framework의 핵심 기능을 제공 하며, Core 컨테이너의 주요 컴포넌트는 Bean Factory이다.

2. Spring Context

– Spring을 컨테이너로 만든 것이 Spring core의 BeanFactory라면, Spring을 Framework로 만든 것은 Context module이며, 이 module은 국제화된 메시지, Application 생명주기 이벤트, 유효성 검증 등을 지원함으로써 BeanFactory의 개념을 확장을 한다.

3. Spring AOP

– 설정 관리 기능을 통해 AOP 기능을 Spring Framework와 직접 통합 시킨다.

4. Spring DAO

– Spring JDBC DAO 추상 레이어는 다른 데이터베이스 벤더들의 예외 핸들링과 오류 메시지를 관리하는 중요한 예외계층을 제공합니다.

5. Spring ORM

– Spring Framework는 여러 ORM(Objecet Relational Mapping) Framework에 플러그인 되어, Object Relational 툴(JDO, Hibernate, iBatis)을 제공한다.

6. Spring Web

– Web Context module은 Application Context module 상위에 구현되어, Web 기반 Application에 context를 제공한다.

7. Spring Web MVC

– Spring Framework는 자체적으로 MVC 프레임워크를 제공하고 있으며, 스프링만 사용해도 MVC기반의 웹 어플리케이션을 어렵지 않게 개발이 가능하다.

You may also like...