라이브러리와 프레임워크의 차이
프레임워크의 제어 역전의 개념이 적용되어야 한다. 애플리케이션을 동작하기 위한 기능을 적용하기 위해 개발자가 직접 애플리케이션 코드를 직접 제어한다면 이것은 라이브러리이다. 즉, 객체가 필요할 때 그 객체를 개발자가 직접 제어하는가 알아서 필요한 객체를 만들어 주느냐(제어역전)에 따라 프레임워크와 라이브러리가 구분된다고 할 수 있다. 개발자는 프레임워크 틀안에 개발에 필요한 클래스를 등록해두고, 프레임워크가 알아서 객체의 생명주기를 관리하며 애플리케이션의 흐름을 주도하는 것이다.
Spring Framework 특징
1) IoC Container
- 자바 객체의 생명주기를 관리(제어 역전)
2) POJO(Plain Old Java Object) 방식
- 가볍다
3) DI(Dependency Injection) : 의존성 주입
- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 의존성을 주입함으로써 서로 연결
- 협업하는 개발자 모두 알아야하는 부분
(예) DAO는 SqlSession에 의존적입니다. Spring은 DAO실행 시 알아서 SqlSession을 주입해줍니다.
4) AOP 지원(Aspect-Oriented Programming) : 관점지향 프로그래밍
- 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리
- XML에 설정만 잘해두면 스프링이 알아서 처리
- MySQL, Oracle, CUBRID - 3가지 데이터베이스 동시처리 가능
- 설정에 관한 부분으로 개발자 1명만 알아도 협업이 가능함
(예) TX(transaction)이나 logging, security
* Transaction
쇼핑몰에서 장바구니에 담은 상품을 결제를 하면 동시에 장바구니에서 상품이 사려져야 합니다.
2가지 이벤트가 동시에 발생해야 하는 일처리가 가능하게 하는 Transaction기능을 Spring은 지원
5) Persistence(영속성)과 관련된 다양한 서비스를 지원
- iBatis(MyBatis)나 Hibernate 등 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공
6) high scalability(높은 확장성)
- 이미 수많은 라이브러리가 스프링에서 지원
- 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이
7) Spring MVC(Model-View-Controller) - Model2 방식
- 웹 프로그래밍 개발시 사용하는 방식
- DispatcherServlet이 Contoller 역할을 담당 -> 각종 요청을 적절한 서비스에 분산
- 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시
8) Batch 지원
- 데이터 처리에 관한 프레임워크로, Job launcher, Job, Job repository로 구성
- 스케쥴링에 따른 Job을 구동하는 기능은 Quartz같은 전용 스케쥴러가 함
- 전용 스케쥴러가 일련의 연속된 Job을 실행하고 스프링 배치는 이런 일련의 단계를 조정
- 스프링 배치의 Job은 여러개의 Step으로 설정되고 각 Step의 실행순서는 배치 XML을 사용해서 쉽게 설정
9) 다국어처리 지원
Spring 주요 모듈
1) Core container
- Spring 프레임워크의 핵심 기능을 제공
- 코어 컨테이너의 주요 컴포넌트는 Bean-Factory(Factory 패턴의 구현)
- BeanFactory는 IoC(Inversion of Control)을 사용하여 애플리케이션의 설정 / DI(Dependency Injection)을 실제 애플리케이션 코드에서 분리
2) Context
- Spring을 프레임워크로 만든 것은 컨텍스트 모듈
- 이 모듈은 국제화된 메시지, 애플리케이션 생명주기, 유효성 검증 등을 지원
- 이메일, JNDI 접근, EJB 연계, 리모팅, 스케쥴링 등과 같은 다수의 엔터프라이즈 서비스를 추가로 제공
- 템플릿 프레임워크와 통합 지원
3) AOP(Aspect Oriented Programming)
- Spring 기반 애플리케이션에서 객체에 트랜잭션 관리 서비스를 제공
- EJB 컴포넌트에 의존하지 않고도 선언적 트랜잭션 관리를 애플리케이션과 결합 가능
4) DAO
- Spring JDBC DAO 추상 레이어는 다른 데이터베이스 벤더들의 예외 핸들링과 오류 메시지를 관리하는 중요한 예외 계층을 제공
5) ORM
- 여러 ORM 프레임워크에 플러그인 되어, Object Relational 툴 (JDO, Hibernate, iBatis SQL Map)을 제공한다.
- Spring의 일반 트랜잭션과 DAO 예외 계층에 순응
6) Web
- 애플리케이션 컨텍스트 모듈의 상단에 구현되어, 웹 기반 애플리케이션에 컨텍스트를 제공
- 다중 요청을 핸들링하고, 요청 매개변수를 도메인 객체로 바인딩하는 작업을 수월하게 함
7) MVC
- MVC 프레임워크는 전략 인터페이스를 통해 설정가능
- JSP, Velocity, Tiles, iText, POI 같은 다양한 뷰 기술을 허용
'프로그래밍 > Spring Framework' 카테고리의 다른 글
Apache Maven project configuration - 메이븐 설정 (0) | 2014.10.14 |
---|---|
Spring IDE plug-in install in Eclipse Java EE keppler - 스프링 IDE플러그인 (0) | 2014.10.14 |
Spring MVC Flow (0) | 2014.10.14 |
ModelAndView Class (0) | 2014.10.14 |
Spring MVC패턴 (Model2 개발) (0) | 2014.09.11 |