'Spring'에 해당되는 글 2건

  1. 2014.09.11 Spring MVC패턴 (Model2 개발)
  2. 2014.09.11 Spring의 기본개념이해
2014. 9. 11. 23:20

1) 요약


- Spring MVC Flow

사용자의 요청-> 사용자의 요청을 분석 -> 사용자의 요청을 처리할 자바빈을 생성 -> 비즈니스 로직이 구현된 메소드를 실행 -> 비즈니스 로직 수행 후 사용자의 요청을 JSP페이지(Redirect)나 혹은 특정 URL로 이동(포워드)시킴


- 웹 어플리케이션을 개발할 때 Spring MVC패턴을 적용하여 웹 어플리케이션의 개발이 가능하도록 구현한 것

- MVC Model-View-Controller로 각각의 역할을 나누어서 개발하는 하는 방식을 말함

- View JSP가 담당하고, Controller Servlet, Model application을 이용하여 개발

- Model 은 비즈니스로직을 담당하는 부분, 비즈니스 로직을 UI(View)로부터 분리시킴

- View client가 직접 사용하는 부분이며, Model에서 생성된 Data client에게 보여주는 역할을 담당, 웹에서는 JSP가 담당함

- Controller는 사용자의 요청을 받아서 요청에 해당하는 비즈니스로직을 수행하도록 하고, 응답을 client에 보내는 역할, 웹에서는 서블릿이 담당


2) MVC패턴 장단점


- 장점 : 디자인코드와 비즈니스 로직이 분리

- 단점 : 초기 설계에 많은 시간이 소요, 개발자에게 MVC패턴에 대한 개념이 필수적으로 요구

 


MVC의 역할


1) Controller의 역할


- 사용자의 요청을 받아서 분석하고 필요한 비즈니스로직(Action)을 수행

- FrontController(DispatcherServlet) 패턴 : 모든 요청을 한군데에서 받음

- ControllerPOJO(Plain Old Java Object)로 만듭니다.

- 프레임워크에 종속적이지 않습니다.

-> Controller에서 Request Object, Response Object를 받는다면 웹에 종속이게 되지만 Spring ModelAndView라는 클래스가 이것을 따로 담당합니다. Controller에 넘어오는 인자가 Request Object, Response Object가 아닙니다.  


2) Model의 역할


- 비즈니스 로직이 구현되어 있습니다.

- View에 제공할 Data를 가공(데이터 그자체, 거의 VO)

- Database에 데이터를 조회, 추가, 변경, 삭제하는 작업을 수행(DAO와 연결)


3) View의 역할


- 클라이언트에게 최종적으로 보여지는 영역입니다.

- 웹에서는 JSP JSTL을 이용해서 구현합니다.(JSP파일은 WEB-INF view폴더에 저장)

(CSS, Javascripts, Stylesheets, font, image 관련 파일은 등은 WebContent 폴더 하위에 저장)

(WEB-INF폴더 안에 넣으면 외부에서 접근 불가 보안상 필요)

- HTML에 데이터를 뿌려줍니다.

- web.xml에서 URL을 설정해주면 주소창에는 파일명이 표시되지 않습니다.(포워드방식)

*web.xml : FrontController(DispatcherServlet)에 대한 초기 설정을 하는 곳

프레임워크에서 설정은 .xml에서 합니다.

 

Spring MVC 웹 개발 시 필요한 Class


- ControlServlet Class : Controller의 역할을 수행하는 Master Servlet

- ActionFactory Class : 사용자의 요청을 처리할 비즈니스 로직이 구현된 XXXAction 객체의 생성을 담당

- Action Class : 모든 XXXAction 클래스가 구현할 Interface

- XXXAction Class : Action 인터페이스의 메소드를 재정의하고 있는 클래스(실질적인 비즈니스 로직의 구현체)

- ActionForward Class  : XXXAction의 비즈니스 로직 수행 후 ControlServlet에게 반환하는 객체

(이동할 URL과 이동방법(포워드/리다이렉트)을 저장)

 

커맨드방식(CMD방식)


) write.jsp, list.jsp ->.jsp까지 안쓰겠다는 것

localhost/0527/index.jsp?cmd=wirte

localhost/0527/index.jsp?cmd=list : 


Posted by 루피아빠
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 루피아빠