전자정부 표준프레임워크를 통해서 오픈 소스 경험하기
기간은 3/28(월) ~ 7/31(일)
https://github.com/orgs/eGovFramework/repositories
전자정부 표준프레임워크를 통해서 오픈 소스 경험하기
기간은 3/28(월) ~ 7/31(일)
https://github.com/orgs/eGovFramework/repositories
지난 연말 12/30 표준프레임워크 2.7.0이 출시되었습니다.
개발도구 64bit full버전이 추가되었고, 버그들이 수정되었습니다.
실행환경의 스프링버전 3.0.5는 변화가 없습니다.
개인적인 생각으로는 2.6.1 정도의 업그레이드라고 생각됩니다만, 아마 스프링 버전이 올라간다면 eGovFrame 3.x로 될 것 같습니다.
개발환경 변화는 다음과 같습니다.
2013.12.30 : 개발환경 2.7.0 릴리즈
from: http://www.egovframe.go.kr/EgovDevEnvReleaseNote.jsp?menu=3&submenu=2
STS에 설치된 플그인도 업데이트됩니다.
Kepler 버전에서 CodeGen 플러그인은 아직 지원되지 않습니다.
코드 곳곳에 비슷한 패턴으로 들어가 있는 부가작업: 로깅, 트랜잭션, 등
이 코드를 한 클래스에 모아놓음 : Advice
그리고 남겨진 순수한 코드 : Core Concern
이제 Advice와 핵심코드를 엮어주는 일: Weaving
어떤 패턴으로 엮어줄 것인가: PointCut
엮어줄 시점을 정하는 것: JoinPoint
핵심코드 실행시점 전에 Advice를 실행 : before
핵심코드 실행시점 전과 후에 Advice를 실행 : around
핵심코드 실행시 예외 발생 Advice를 실행 : throw
...
<bean id="adviceUsingXML" class="egovframework.rte.fdl.aop.sample.AdviceUsingXML" />
<bean id="concernSample" class="egovframework.rte.fdl.aop.sample.ConcernSample" />
<aop:config>
<aop:pointcut id="targetMethod" expression="execution(* egovframework.rte.fdl.aop.sample.*Sample.*(..))" />
<aop:aspect ref="adviceUsingXML">
<aop:before pointcut-ref="targetMethod" method="beforeTargetMethod" />
<aop:after-returning pointcut-ref="targetMethod" method="afterReturningTargetMethod" returning="retVal" />
<aop:after-throwing pointcut-ref="targetMethod" method="afterThrowingTargetMethod" throwing="exception" />
<aop:after pointcut-ref="targetMethod" method="afterTargetMethod" />
<aop:around pointcut-ref="targetMethod" method="aroundTargetMethod" />
</aop:aspect>
</aop:config>
code from: egovframe textbook
추천예제: 최범균님 스프링3.0 서적 chap01 예제
http://www.kame.co.kr/pds1.html?main=main_pds [G220] 링크
http://www.egovframe.go.kr 전자정부 표준프레임워크 사이트 메인페이지와 http://open.egovframe.go.kr 오픈 커뮤니티 메인페이지가 바뀌었습니다.
http://www.egovframe.go.kr/linklist.jsp
관련 오픈소스 링크 페이지 맘에 듭니다.
눈에 잘 띄게 된 것 같습니다.
작업하신 분들 수고 많으셨습니다.
배치처리 (Batch Layer)
지속적으로 제기된 일괄(배치) 기능에 대한 요구를 지원하기 위해 실행환경, 개발환경, 운영환경 으로 이루어진 일괄(배치) 프레임워크가 추가되었습니다.
표준프레임워크 배치 실행환경은 3개 레이어(Core, Support, Execution Layer)로 구성되며, 일괄 (배치) 처리를 위한 기반 환경을 제공합니다.
모바일 화면처리 (Mobile Presentation Layer)
모바일 화면처리는 모바일 웹 애플리케이션을 위한 자바스크립트 프레임워크인 jQueryMobile을 포함하고 있습니다.
모바일 디바이스 API (Mobile Device API Layer)
모바일 디바이스 API는 아이폰, 안드로이드 앱으로 모바일 웹 애플리케이션을 패키징하고, 가속도계, 위치정보, 주소록 같은 디바이스의 기능을 자바스크립트로 제어하도록 지원합니다.
디바이스 API는 가장 많이 사용되는 폰갭(phonegap)을 포함하고 있습니다.
표준프레임워크의 자동생성된 샘플은 hsqldb를 기본적으로 이용하고 있습니다. 2.6부터는 hsqldb서버를 따로 실행하지 않고, 바로 실행합니다.
datasource 설정부터 찾아보겠습니다.
ctrl+shift+R(맥은 cmd+shift+R)로 Open Resource 창을 엽니다. *data라고 검색어를 입력하면 context-datasource.xml 파일이 보입니다. 선택해서 파일을 엽니다.
<jdbc:embedded-database> 설정이 HSQL을 지정하고 있습니다. db파일의 위치는 classpath상에 있고, db/sampledb.sql 입니다. sampledb.sql 파일을 선택하고 ctrl+shift+R 단축키를 입력하면 sampledb.sql 파일을 쉽게 열 수 있습니다.
src/main/resources 폴더 아래 db 폴더가 있고, 그 아래 sampledb.sql 파일이 있습니다. 파일을 열어서 sql 내역을 살펴보겠습니다.
CREATE MEMORY TABLE SAMPLE(...) 과 같은 SQL을 볼 수 있습니다.
메모리 DB를 사용하면 테스트를 용이하게 할 수 있는 장점이 있습니다. 딱 거기까지입니다. 익숙하게 다루기까지는 연습이 많이 필요할 것 같습니다.
업무처리 (Business Logic Layer)
업무처리 레이어는 업무 프로그램의 업무 로직을 담당하는 레이어로서, 업무 흐름 제어, 에러 처리 등의 기능을 제공합니다.
<그림> 업무처리 레이어 구성
업무처리 레이어는 Spring Web Flow, Spring 이상 2가지 오픈소스를 사용합니다.
프로세스 제어(Process Control)을 담당하는 웹 플로우는 페이지 흐름(flow)의 정의와 수행을 처리합니다.
에러 처리(Exception Handling)는 표준프레임워크 기반의 시스템 개발시 Exception에 따라서 특정 로직을 실행하여 Exception에 따라 적절한 대응을 할 수 있습니다.
화면처리 레이어(Presentation Layer)
화면처리 레이어는 MVC(Model-View-Controller) 패턴에서 View에 해당합니다. 화면처리 레이어의 구성은 다음과 같습니다.
<그림> 화면처리 레이어 구성
Spring MVC, Internationalization, Ajax Support, Security, UI Adaptor 이상 5가지 기능을 제공합니다.
MVC 패턴의 프레임워크는 스프링 MVC, 스트럿츠(Struts), 웹워크(Webwork) 등이 있지만, 표준프레임워크에서는 스프링 MVC를 채택하였습니다.
국제화(Internationalization) 기능은 다국어를 처리하는 방법입니다. 스프링 MVC의 LocaleResolver를 이용합니다. 브라우저 헤더, 세션, 쿠키 등에 있는 언어 정보를 이용해서 해당 언어로 페이지를 보여주는 기능입니다.
Ajax 지원은 AjaxTags 라이브러리를 이용합니다. Ajax를 이용해 자주 사용되는 기능을 custom tag형태로 제공합니다.
인증, 권한 같은 일반적인(통상적인) 개념의 Security 서비스는 Spring Security를 활용한 공통기반 레이어에
서 제공합니다. 화면처리 레이어의 Security 서비스는 입력값 유효성 검증 기능을 제공한다. 스프링과 연결되는 자카르타 커먼스 밸리데이터(Jakarta Commons Validator)를 이용합니다.
UI 어댑터는 표준프레임워크와 RIA(Rich Internet Application) 솔루션을 연결하기 위한 기능입니다. 마이플랫폼 등의 상용 솔루션과 연결을 지원하는 기능입니다.
전자정부 표준프레임워크의 실행환경은 애플리케이션 프레임워크와 라이브러리 39가지가 8개의 서비스 그룹으로 구성되어 있습니다.
그림과 같이 공통기반 위에 화면처리, 업무처리, 데이터처리, 연계통합, 배치처리, 모바일 화면처리, 모바일 디바이스 API 레이어(Layer)들이 있습니다.
공통기반 (Foundation Layer)
공통기반 레이어는 아래 그림과 같이 구성되어 있습니다. 20가지 기능별 컴포넌트들은 실행환경의 각 레이어에서 공통적으로 사용되는 기능을 제공합니다.
AOP, Cache, Compress/Decompress, Encryption/Decryption, Excel, File Handling, File Upload/Download, FTP, ID Generation, IoC Container, Logging, Mail, Marshalling/Unmarshalling, Object Pooling, Property, Resource, Scheduling, Server Security, String Uril, XML Manipulation 이상 20가지의 공통기능을 제공합니다.
이 중에서 가장 주의깊게 봐야할 것이 IoC Container입니다. 스프링의 핵심이고, 이것을 기준으로 표준프레임워크의 애플리케이션 패턴이 이루어집니다. 나머지 기능들도 각기 중요한 역할을 하기 때문에 후반에 하나씩 살펴보겠습니다.