'Back-End/SpringFrame_1'에 해당되는 글 23건

donaricano-btn

@RequestMapping 애노테이션 속성


1. @RequestMapping

- URL과 Controller 메소드의 매핑을 설정하는 애노테이션이다

- URL 이외에도 다양한 속성을 지정할 수 있다

- URI 템플릿 기능을 이용하면 URL속의 값을 쉽게 얻어 올 수 있다


2. 속성

- 모든 속성은 배열을 사용해 여러 값을 설정할 수 있다

1) Value

- URL/customer



- 배열

 

- /foo와 /bar 양쪽 URL에 대응하는 메소드를 정의함

2) HTTP 메소드

- URL 만 설정시 어떤 HTTP메소드라도 받아들임

a. 한정 하고 싶을시 methd 설정

 

b. static import 클래스 처음에 정의하면 소스가 깔끔해짐

 

3) 요청 파라미터

같은 URL이라도 요청 파라미터가 action=new와 action = edit으로 구분할 수 있다

 

- action = new 접근 (http://~/컨텍스트 경로/foo?action=new..)

a. 요청 파라미터 키만 설정

 

- new = xxx 든 new = yyy 든지 new 라는 키의 요청 파라미터가 설정되어 있으면 실행

b. 이 요청 파라미터가 설정되지 않을 때

 

- 요청 파라미터 action의 값이 new가 아닐 때

c. 요청 파라미터 action 자체가 설정 되지 않은 때

 

블로그 이미지

리딩리드

,
donaricano-btn

Function of Spring

대표적인 스프링의 기능

- 메시지 관리

- Validation관리


1. 메시지 관리

- 스프링의 DI 컨테이너에는 메시지 관리 기능이 있다

- 메시지를 코드와 연결해 관리

- 국제화 대응


1) MessageSource 

- MessageSource 오브젝트에는 메시지를 가져오는 getMessage 메소드가 정의 되어있다

- getMessage()를 이용하여 메시지 가져옴

- 인터페이스 이다


2) ReloadableResourceBundleMessageSource 클래스

- 구현클래스

- 일정 시간마다 프로퍼티 파일의 변경 여부를 확인하여 메시지 리소스 파일의 메시지를 읽어올 수 있다

- 메시지 리소스 파일을 언어별로 여러개 분비해 해당 지역 언어로 된 메시지 리소스 파일에서 메시지를 가져와 국제화 표현 가능


2. Validation

- 검증은 사실 비즈니스 로직에서 처리하는 것이 맞다

- org.springframework.validator에 포함되어 있다


1). 스프링에는 사실 검증 처리가 없다?

- 스프링은 단지 검증처리 인터페이스 + 검증 처리 결과 저장 오브젝트 만 있다

- 그러나 Bean검증이라는 것이 존재


2) Bean 검증


블로그 이미지

리딩리드

,
donaricano-btn

PresentationLayer_1


1. 스프링 MVC


1_1. MVC설계

- 클래스 별로 약한 결합으로 되어있다

- 모델-뷰-컨트롤러뿐만 아니라 스프링 MVC가 제공하는 기능은 독립적이고 약한 결합니다

1_2. 애노테이션 도입

- 스프링 1.0에서는 컨트롤러 클래스를 만들때 컨트롤러 인터페이스를 만들어야 했다

- 지금은 컨트롤러 클래스@Controller 애노테이션만 선언 하면된다

- URL과 실행할 메소드의 메핑도 @RequestMapping 이면 된다

1_3. 스프링 MVC와 REST

1) REST

- Representational State Transfer, 웹 어플리케이션을 구현하는 방법의 하나

- 웹상의 정보를 하나하나 리소스로 파악하고 그 식별자로서 URI를 할당해 고유하게 특정할 수 있게 한다

Example    

- foo.bar.baz 도메인으로 복수의 사용자 정보를 관리

- 사용자 정보에 uri로 http://foo.bar.baz/user/{사용자id}를 할당해 각 사용자를 특정하게 관리

 REST의 특징은 소스 접근 방식이다

- REST로 리소스 접근시 HTTP프로토콜로 정의된 HTTP 메소드를 충실하게 사용한다

Example

- 아이디가 1인 사용자는 GET메소드로 접근

- 아이디가 2인 사용자는 POST로 접근

REST 웹 어플리케이션을 구축에 필요한 MVC 프레임워크는 기능

a. URL을 자유롭게 결정할 수 있다

b. HTTP 메소드에 따라 실행할 처리를 전환할 수 있다

c. URL일부를 쉽게 추출해 사용할 수 있다

- 스프링MVC는 REST의 사고의 강하게 영향 받았다


1_4. 스프링 MVC의 요소

1) 동작 개요


역할

a. DispatcherServlet

프론트 컨트롤러를 담당

- 모든 HTTP 요청을 받아 들여 그 밖의 오브젝트 사이의 흐름 제어

b. HandlerMapping

- 클라이언트 요청을 바탕으로 어느 컨트롤러를 실행 할지 결정

- 애노테이션 이용시 mvc:annotation-driven 태그를 설정하여 RequestMappingHandlerMapping 클래스가 적용됨

c. Model

- 컨트롤러에서 뷰로 넘겨줄 오브젝트를 저장하기 위한 오브젝트

- HttpServletRequest와 HttpSession처럼 String키와 오브젝트를 연결하여 오브젝트 유지

d. View

- 뷰에 화면표시 처리 의뢰

e. Business

- 비즈니스 처리

f. Controller

- 클라이언트 요청에 맞는 프레젠테이션 층의 애플리케이션 처리

g. 뷰

- 화면표시

흐름

a. 요청받기

- DispatcherServlet은 브라우저로부터 요청을 받는다

b. 컨트롤러 오브젝트 얻기와 메소드 실행

- DispatcherServlet은 요청된 url을 핸들러매핑 오브젝트에 넘기고 호출 대상의 컨트롤러 오브젝를 얻어 url에 해당하는 메소드 실행

c. 비즈니스로직처리와 그 결과를 뷰에 넘기기 위해 Model 오브젝트에 저장 

- 컨트롤러 오브젝트는 비즈니스 로직 처리를 실행하고, 결과를 바탕으로 뷰에 전달할 오브젝트Model 오브젝트에 저장한다, 끝으로 컨트롤러 오브젝트는 처리 결과에 맞는 View이름을 반환한다

d. View오브젝트 얻기

- DispatcherServlet은 컨트롤러에서 반환된 View 이름뷰 리졸버에 전달 해서 View 오브젝트를 얻는다

e. 뷰 호출 및 화면 표시 의뢰

- View 오브젝트는 해당하는 뷰를 호출해서 화면 표시 의뢰

f. 화면 표시 처리 실행

- 뷰는 Model 오브젝트에서 화면 표시에 필요한 오브젝트를 가져와 화면 표시 처리 실행


컨트롤러의 개요와 Model 오브젝트


- Model 은 스프링 MVC의 Model 오브젝트이다

- Model 오브젝트는 서블릿 API에서 말하는 HttpServletRequest나 HttpSession과 같다

View와 뷰리졸버

- 스프링MVC에서는 View인터페이스를 구현한 View 오브젝트가 애플리케이션 개발자가 작성한 뷰를 호출해서 화면에 표시함

- JSTL이라면 JstlView 클래스의 오브젝트, Velocity라면 VelocityView클래스 오브젝트가 담당

- 컨트롤러와 뷰 사이의 독립성을 유지하기 위해 뷰 리졸버 오브젝트를 사이에 둔다

- 컨트롤러는 뷰가 어떤 뷰 기술을 쓰든 신경쓸 필요가 없다


UrlBasedViewResolver 와 뷰 경로

- 뷰 리졸버에서 가장 자주 사용되는 것이 UrlBasedViewResolver이다

- 설정

접두사 : /WEB-INF/views/

접미사: .jsp







'Back-End > SpringFrame_1' 카테고리의 다른 글

[Spring] @RequestMapping 애노테이션 속성  (0) 2016.08.22
[Spring] PresentationLayer_Function of Spring  (0) 2016.08.16
[Spring] BusinessLayer_2  (0) 2016.08.07
[Spring]BusinessLayer_1  (0) 2016.08.01
[Spring] DataAccessLayer_2  (0) 2016.07.31
블로그 이미지

리딩리드

,
donaricano-btn

1. 트랜잭션 매니저의 구현 클래스

- 트랜잭션 매니저의 이용방법은 데이터 엑세스 기술에 의존하지 않는다

- 공통 인터페이스가 존재함

- Bean 정의(DataSourceTransactionManager)



2. 트랜잭션 기능의 사용법

2_1. 선언적 명시적 트랜잭션

1) 선언적 트랜잭션

트랜잭션 처리의 대상으로 하는 메소드를 Bean정의 파일 혹은 애노테이션으로 지정

- 트랜잭션 정보도 함께 설정하며 나머지는 스프링이 자동으로 프록시를 생성해서 트랜잭션 처리 함

- 애노테이션 소스 코드의 트랜잭션 처리를 기술할 필요가 없으므로 좋다

2) 명시적 트랜잭션

- 트랜잭션 매니저의 API를 애플리케이션 프로그램에서 직접 호출하여 트랜잭션 처리

- 애플리케이션 소스 코드에 트랜잭션 처리가 기술되어 코드가 복잡해짐


2_2. 선언적 트랜잭션 설정

1) Bean정의 파일 의한 선언적 트랜잭션- 어드바이스 설정

a. 기본 설정

 

- 와일드카드(*) 함으로서 모든 메소드에 기본 트랜잭션 정의 정보가 됨

b. 정의 정보 설정

 

- 전파속성 : PROPARGATION_REQUIRED

- 독립성 수준 : READ_COMMITED

- 시간만료 : 10초

- 읽기 전용상태 : false

- 롤백대상 예외 : sample.business....

c. 대상 오브젝트에 어드바이스 적용

 

- 이름끝에 Service 들어간 메소드 모두 지정

- 포인트 컷을 메소드가 아니라 애노테이션으로 지정하는 법

- Example(@Service 붙은 모든 클래스를 트랜잭션 대상으로 할때)

 

2) 애노테이션 의한 선언적 트랜잭션

a. 기본 설정

 

b. 메소드 마다 트랜잭션 정의 정보 

 

c. Bean 정의 파일에 @Transactional을 유효하게 설정 해야

 

2_3. 명시적 트랜잭셔 사용법

 


3. 트랜잭션 시작/ 종료 로그를 출력 하는 법

- DataSourceTransactionManger와  Log4j를 이용할 때, Log4j에 설정

3_1. XML 경우

 

3_2. property

 

'Back-End > SpringFrame_1' 카테고리의 다른 글

[Spring] PresentationLayer_Function of Spring  (0) 2016.08.16
[Spring] PresentationLayer_1  (0) 2016.08.08
[Spring]BusinessLayer_1  (0) 2016.08.01
[Spring] DataAccessLayer_2  (0) 2016.07.31
[Spring] DataAccessLayer_1  (0) 2016.07.25
블로그 이미지

리딩리드

,