'spring 모듈'에 해당되는 글 1건

  1. 2014.09.11 Spring의 기본개념이해
2014. 9. 11. 23:19

라이브러리와 프레임워크의 차이


프레임워크의 제어 역전의 개념이 적용되어야 한다. 애플리케이션을 동작하기 위한 기능을 적용하기 위해 개발자가 직접 애플리케이션 코드를 직접 제어한다면 이것은 라이브러리이다. , 객체가 필요할 때 그 객체를 개발자가 직접 제어하는가 알아서 필요한 객체를 만들어 주느냐(제어역전)에 따라 프레임워크와 라이브러리가 구분된다고 할 수 있다. 개발자는 프레임워크 틀안에 개발에 필요한 클래스를 등록해두고, 프레임워크가 알아서 객체의 생명주기를 관리하며 애플리케이션의 흐름을 주도하는 것이다.

 

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 같은 다양한 뷰 기술을 허용



Posted by 루피아빠