본문 바로가기

💻Spring

전자정부 프레임워크 2일차 - 프레임워크 분석 2

반응형

앞선 프레임워크 분석으로 전반적인 프레임워크 데이터 흐름에 대해서 알아보았고

이번에는 다루지 않았던 파일들에 대해서 어떤 방식으로 사용되는지 확인해볼 예정이다.

 

출처 : 전자정부 프레임워크 샘플 코드 분석 (java 파일) (tistory.com)

 

 

1. EgovSampleExcepHndlr.java , EgovSampleOthersExcepHndlr.java

Handling : 에러발생등 예외 상황을 매끄럽게 처리 할 수 있도록 한다라는 뜻,,

좌측의의 EgovSampleExcepHndlr , EgovSampleOthersExcepHndlr 라는파일은

에러가 발생할 경우 핸들링하는 java 파일이다.

우측의 context-aspect.xml이라는 설정파일에서 java파일에 대한 bean을 등록하고있다.

egovHandler라는 id를 가진 bean을 참조하여

위의 java파일의 패키지 경로를 잡고 bean으로 등록하는것을 확인 할 수 있다.

 

 

2. EgovBindingInitializer.java , EgovImgPaginationRenderer.java

 

위의 그림은 클라이언트 > 스프링 컨테이너 > 서버 의 과정인데

바인딩 결과가 박스쳐진 bindingResult이고 

위의 WebDataBinder에 등록된 프로퍼티 에디터,컨버전 서비스를 통해 바인딩 결과를 도출해낼 수 있다.

이 WebDataBinder는 WebBindingInitializer나 @InitBinder메서드를 통해서 등록된 변환 기능 오브젝트를 이용해

HTTP요청 파라미터를 모델의 프로퍼티에 맞도록 변환해서 넣어주는역할을 한다.

 

EgovBindingInitializer.java : webBindingInitializer 에서 커스터마이징 된 표준 프레임워크의 java파일

EgovImgPaginationRenderer.java : 페이징 처리를 하는 java파일 

 

위 파일은 해당 기능을 위해 사용되는데,

 

Dispatcher-sevelet.xml 파일에서

Dispatcher-sevelet.xml의 webBindingInitializer

위의 EgovBindingInitializer.java 파일의 bean을 등록하고  RequestMappingHandlerAdapter 클래스를 

WebBindingInitializer속성의 EgovBindingInitializer 클래스로 설정한다.

RequestMappingHandlerAdapter 클래스는 HTTP 요청을 읽어 실행시킬 Controller의 메소드를 선택하는 역할을 한다.

 

 

또한 Dispatcher-sevelet.xml 파일에서

Dispatcher-sevelet.xml의 imageRenderer

EgovImgPaginationRenderer.java 파일에 대한 bean객체를 등록하고

등록된 bean의 paginationManager에서 imageRenderer의 bean을 참조한다.

 

 

3. DefaultVO,VO,Mapper

sqlmap 폴더에서 mappers폴더와 sample폴더 하위의 SQL.xml 파일의 차이가 뭔지 궁금했었는데 차이점을 알게되었다.

 

SampleMapper : Sample에 관한 데이터 처리 mapper java파일

SampleDefaultVO : 페이징 처리 관련 VO java파일

SampleVO : Sample 테이블의 모델에 대한 VO java파일

 

우측의 xml 파일들에서 VO.java파일을 잡아주는 설정을 할 수 있다.

!!!!

ibatis 연동 

    가. sample 폴더 하위의 SQL.xml에서 VO패키지가 있는 경로를 typeAlias태그의 type 속성으로 잡아준다.

   나. sql-map-config.xml 파일에서 sample폴더 하위의 SQL.xml 파일의 package 경로를 sqlMap태그의 resource 속성으로

  잡아준다.

 

 

 mybatis 연동 :

 

가. mappers 폴더 하위의 SQL.xml에서 SampleMapper클래스가 있는 package경로를 mapper태그의 namespace 속성으로 잡아준다.

나. sql-mapper-config.xml 파일의 typeAlias 태그에 VO클래스의 package 경로를 type 속성으로 잡아준다.

 

오늘 안 사실 : 나는 ibatis를 이용해 SQL을 연동하고 있었다.

!!!!

 

4. EgovSampleService , EgovSampleServiceImpl

EgovSampleService : Sample관련 Service의 선언부가 담긴 인터페이스 java파일

EgovSampleServiceImpl : EgovSampleService을 implements받고 있는 서비스의 구현부가 담긴 interface java파일

 

5.  SampleDAO , SampleMapper

SampleDAO : SampleVO와 관련하여 데이터를 주고받는 메서드의 구현부가 담긴 java파일

 

SampleMapper : SampleVO와 관련하여 데이터를 주고받는 메서드의 선언부가 담긴 interface java 파일

 

6. EgovSampleController

Controller : 사용자의 요청을 받고 서비스에 데이터를 넘겨주는 역할과 모델로부터 받은 데이터를 지정된 뷰에 넘겨주는 역할을 한다.

앞서 말했던 dispatcher-servlet.xml의 component-scan을 통해 controll 어노테이션에 대해 전부 스캔을 한다.

이러한 설정으로 뷰에서 넘어오는 url과 매핑되어 데이터를 받을 수 있다.

 

7. 다국어 처리

 

위의 message폴더 하위에 다국어 property 파일들이 모여있는데 이 값 설정은

context-common.xml의 bean에서 경로를 잡고있음

반응형