잊지 않겠습니다.

5. Spring 소개

Java 2013. 9. 6. 14:15

* 사내 강의용으로 사용한 자료를 Blog에 공유합니다. Spring을 이용한 Web 개발에 대한 전반적인 내용에 대해서 다루고 있습니다.



이 장에서는 Spring Framework에 대한 소개와 왜 Spring을 써야지 되는지에 대한 당위성을 간단한 application을 작성하면서 알아보도록 하겠습니다.
application을 작성하면서 놀랍게 줄어드는 코드 양과 Spring의 강력함을 느끼실 수 있으실겁니다.

Spring Framework 란 엔터프라이즈급 자바 어플리케이션 개발에서 필요로 하는 경량형 어플리케이션 프레임워크입니다. 
스프링 프레임워크는 J2EE[Java 2 Enterprise Edition] 에서 제공하는 대부분의 기능을 지원하기 때문에, J2EE를 대체하는 프레임워크로 자리잡고 있습니다. Spring이라는 이름의 기원은 기존 EJB로 대표되는 Enterprise Framework의 시대를 겨울(winter)로 정의하고, 이젠 봄(Spring)이 왔다 라는 의미로 지어졌습니다. 시작은 한권의 책의 예제에서부터 시작이 되었습니다. 

Spring Framework는 다음과 같은 특징을 가지고 있습니다.

1) 경량 컨테이너입니다. (light container) 스프링은 객체를 담고 있는 컨테이너로써 자바 객체의 생성과 소멸과 같은 라이프사이클을 관리하고, 언제든 필요한 객체를 가져다 사용할 수 있도록 도와주는 기능을 가지고 있습니다.
2) DI[Dependency Injection] 패턴 지원을 지원합니다. (DI : 의존성 주입)
= 별도의 설정 파일을 통해 객체들간의 의존 관계등을 설정할 수 있습니다.  그로인해 객체들간의 느슨한 결합을 유지하고 직접 의존하고 있는 객체를 굳이 생성하거나 검색할 필요성이 없이 구성이 가능합니다. 이는 IoC(Inversion of Controller)로 이야기되기도 합니다. 정확히는 DI로 인한 IoC를 가능하게 하는 Framework라고 할 수 있습니다.
3) AOP[Aspect Oriented Programming] 지원 (AOP : 측면 지향 프로그래밍 )
= AOP는 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법이다. 이는 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 한다.
스프링은 자체적으로 프록시 기반의 AOP를 지원하므로 트랜잭션이나 로깅, 보안등과 같이 여러 모듈에서 공통적으로 필요하지만 실제모듈핵심은 아닌 기능들을 분리하여 각 모듈에 적용할 수 있도록 한다.

Spring Framework는 위의 3가지의 특징을 가진 Framework입니다. 또한, 부가적인 기능으로서 ruby on rails에서 표방한 non shared status web 개발을 지원하는 @MVC 역시 지원하고 있습니다.


Spring Framework의 기본구조입니다. 위에서 말한 3가지의 특징은 Spring Core와 Spring AOP, Spring Context에 의하여 구성이 되어 있습니다. 나머지 ORM, WEB, DAO, WEB MVC의 경우에는 부가적 기능이라고도 볼 수 있습니다.

이런식으로만 적어두면, Spring이 과연 무엇을 하는 녀석인지를 알 수가 없습니다. 그래서 간단한 예제를 통해서 Spring을 통해서 점점 진화가 되어가는 코드의 변화를 보면서 Spring을 익혀보도록 하겠습니다. 


Posted by Y2K
,

4. 개발환경의 구성

Java 2013. 9. 6. 13:52

* 사내 강의용으로 사용한 자료를 Blog에 공유합니다. Spring을 이용한 Web 개발에 대한 전반적인 내용에 대해서 다루고 있습니다.



이번 장에서는 개발 환경을 구성해보도록 하겠습니다.

Edit

java sdk 설치

java sdk를 다운받아 설치합니다. windows에서는 oracle home page 및 google 검색을 통해 손쉽게 설치가 가능합니다. 하지만, linux에서는 조금 다른 문제가 있는데요. linux는 기본적으로 open jdk가 설치되어 있습니다. oracle에서 제공한 것이 아닌, jdk 표준 규약에 따른 open source로 구성된 jdk가 이미 설치가 되어 있습니다. 그런데 이 open jdk가 성능이 oracle 것에 비하여 떨어집니다.. 다음과 같은 절차를 통해서 open jdk를 삭제하고 oracle java를 설치하는 것이 좋습니다.

sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
deb http://ppa.launchpad.net/webupd8team/java
apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 
sudo ln -s /usr/lib/jni/libswt-* -t ~/.swt/lib/linux/x86/
sudo ln -s /usr/lib/jni/libswt-* -t ~/.swt/lib/linux/x86_64/

그리고, JAVA_HOME을 등록합니다. linux의 경우에는

sudo vi /etc/profile 

을 실행해서, JAVA_HOME을 처리해야지 됩니다.
 JAVA_HOME="/usr/lib/jvm/java-7-sun" 

을 설정해주는 것으로 java 설치가 모두 마쳐집니다. 
개발의 편의성을 위해서 path를 설정해주는것이 좋습니다. 
command 창에서 java -version을 실행시켜 java version을 확인합니다.


maven의 설치

먼저 maven에 대한 간단한 소개부터 하도록 하겠습니다.

Maven이란 Apache Software Foundation에서 개발되고 있는 소프트웨어 프로젝트 관리툴입니다.
Maven은 Project Object Model (POM) 이라는 것에 기초를 두어 프로젝트의 빌드, 테스트, 도큐멘테이션, 성과물의 배치등, 프로젝트의 라이프사이클 전체를 관리합니다. 프로젝트의 빌드툴인 Ant와 달리, Maven은 프로젝트 관리툴로서 프로젝트에 관련한 여러가지 정보를 POM에 집약해, POM의 정보에 기초를 두어 프로젝트 전체를 관리합니다.

Maven의 주 기능은 다음과 같습니다.

  1. 프로젝트 라이브러리 관리
  2. 프로젝트 정보의 전달 (사이트의 작성, 배치나 유니트테스트의 레포트등)
  3. 프로젝트 작성부터 컴파일, 테스트, 패키지, 배치등의 프로젝트 프로젝트 라이프사이클에 포함되는 각 태스크의 지원이 가능합니다..

또, Maven은 소프트웨어 프로젝트의 관리 툴임과 동시에 이해툴로서 있습니다.
Maven의 제1목적은 개발자가 단기간에 프로젝트를 이해할 수 있도록 도움을 주는 것입니다. 그를 위해 Maven 에서는

  1. 빌드프로세스를 간단히 한다
  2. 통일한 빌드시스템을 제공한다.
  3. 양질의 프로젝트 정보를 제공한다.
  4. 개발의 가이드 라인을 지원한다.
  5. 신기술에 대해서는 투과적인 이행을 고려하여 넣는다.

과 같은 일을 하고 있습니다. 이런것들에 의해 Maven을 이용한 프로젝트는 어떠한 것이라도 빌드방법이 동일하다거나 디렉토리 구성이 거의 같아서 전체를 파악하기 쉽다등의 장점이 있습니다.
Maven의 구성은 작은 코어와 대량의 플러그인으로 되어 있습니다. 그리고 플러그인이나 라이브러는 필요에 따라서 자동적으로 다운로드가 행해집니다. 이 구조에 의해서 Maven이나 플러그인이 버전업할 때 신기술에 대해 투과적 이행이 가능합니다.
Maven은 당초 Jakarta Turbine의 프로젝트를 위해 작성되었습니다. 복수의 서브프로젝트로 구성된 Jakarta Turbine의 빌드 프로세스를 단순화 하기위해 작성되어졌던 것이 개별의 프로젝트로 독립한 것입니다.


그럼 maven의 설치를 해보도록 하겠습니다. maven은 http://maven.apache.com 에서 배포가 되고 있으며, 최신 버젼인 3.0.4를 다운받아 원하는 위치에 압축을 풀면 기본 설치는 완료됩니다. 사용을 편하게 하기 위해서, MAVEN_HOME을 다음과 같이 등록을 합니다.





또한 maven을 자주 사용하기 때문에 MAVEN_HOME\bin 을 path에 등록하면 maven 설치는 완료됩니다. 
명령어 창에 다음 명령어를 실행시켜, maven의 설치가 완료됨을 확인하도록 합니다.





maven은 추가 library를 관리하기 위해서 local repository를 이용하게 되는데, local repository는 기본적으로 사용자 directory에 .m 폴더를 만들어서 사용하게 됩니다. 기본 설정이 windows에서는 사용자 폴더 안에 위치하게 되어 관리가 힘들게 됩니다. windows 환경에서는 변경이 필요합니다. 
MAVEN_HOME\conf\settings.xml 파일을 에서 repository 항목을 자신이 편한 위치로 변경하면 됩니다.

이제 기본적인 maven 설정은 모두 완료되었습니다.


eclipse & eclipse plug in의 설치

eclipse 의 설치는 매우 간단하게 처리가 가능합니다. 그냥 다운 받아서 workspace를 지정후, 실행하면 됩니다. 
기본적으로 모든 project는 spring과 maven을 이용해서 구성이 되기 때문에, maven과 spring plug in은 설치하는 것이 도움이 됩니다. 
maven과 spring plug in을 설치하도록 합니다. 
help > Eclipse marketplace 에 들어가서 spring으로 검색을 합니다.






STS를 찾아 설치를 완료합니다.

maven 역시 같이 검색을 해서 다음 plug-in을 설치합니다.



maven plugin은 기본적으로 maven 3.0.4를 포함하고 있습니다. 먼저 설치한 maven의 설정을 따라가기 위해서 maven의 설정을 수정해줄 필요가 있습니다. 
windows > preferences 에 들어가서 maven 항목을 확인합니다. installation 에서 설치된 maven 위치로 설정하면 eclipse의 설정은 모두 마쳐집니다.





mysql 설치

mysql은 open source database로, 정부 표준 프레임워크에서 인정된 DB입니다. 개발용 DB로 사용할 수 있을정도로 가볍고, 빠른 속도를 자랑합니다.
그리고, 이번 강의는 모두 mysql 기준으로 행해지기 때문에, mysql을 설치해주시길 바랍니다.



유용한 eclipse plug in

개인적으로 유용하다고 생각되는 eclipse plug in들입니다. 입맛대로 골라서 사용해주시면 됩니다.

  1. Easy Shell : 필수 입니다. 이게 없으면 maven을 사용하기가 매우 힘듭니다.
  2. Color and theme : 색상 변경을 쉽게 해주는 plug in입니다.
  3. dbBear : db client ui입니다.
  4. amaterasUML
  5. moreUnit

Hello World의 실행

먼저, eclipse 에서 새로운 프로젝트를 하나 생성합니다. 
기존의 eclipse에서 새로운 프로젝트를 만드는 법을 사용하지 않고, maven을 이용한 application으로 작성합니다.





maven-archtype-quickstart를 선택하고, project를 작성합니다. 작성된 project의 파일구조는 다음과 같습니다. (resource folder는 존재하지 않을수 있습니다.)





각 Folder가 의미하는 것은 다음과 같습니다. 이와 같은 Folder 구조에 매우 익숙해질 필요가 있습니다. 이는 maven을 이용한 Project의 기본 Folder 구조입니다.

srcsource code가 위치합니다.
src/main개발 code가 위치합니다.
src/test테스트 code가 위치합니다.
src/main/javajava code가 위치합니다. ClassLoader가 접근하는 root위치입니다.
src/main/resourcejava code이외의 파일들을 관리할 때 사용됩니다.
src/test/javaUnit Test code가 위치합니다.
src/test/resourceUnit Test code에서 사용되는 파일들을 관리할 때 사용됩니다.
targetcompile된 파일들이 위치하고, test의 결과가 문서화되는 폴더입니다.
target/classessrc/main에 있는 파일들이 compile된 class 파일들이 위치합니다. 그리고, resource안에 있는 파일들이 copy됩니다.
target/test-classessrc/test에 있는 파일들이 compile된 class파일들이 위치합니다.
target/generated-sourcesAspectJ에 의해서 새롭게 생성된 main code들이 위치합니다.
target/generated-test-sourcesAspectJ에 의해서 새롭게 생성된 test code들이 위치합니다.
target/surefiretest에 대한 xml문서 등을 만드는데 사용되는 surefire jar가 임시로 위치합니다.
target/surefire-reportstest에 대한 결과를 txt파일과 xml파일로 제공합니다.

이 폴더 구조는 maven의 명령어를 실행시킬 때마다 동적으로 생성 또는 삭제가 되지만 위의 구조는 기본구조이기 때문에 변하지 않습니다. 위 구조를 반드시 숙지하시길 바랍니다.

Easy Shell을 이용해서, Console 창을 하나 실행합니다.

mvn compile 

을 실행 시키면, hello world project가 compile이 되는 것을 볼 수 있습니다.





pom.xml 파일을 한번 열어보도록 하겠습니다. maven은 POM에 기초하여 프로젝트의 빌드, 테스트, 도큐멘테이션, 성과물의 배치등, 프로젝트의 라이프사이클 전체를 관리를 한다고 했습니다. 그럼 maven에서 과연 어떤 정보들을 관리하고 있는지 한번 알아보도록 하겠습니다.

mvn site

를 실행시켜보시길 바랍니다.

무언가 maven에서 열심히 작업을 하고 있습니다. 그리고 Easy Shell을 이용해서 target/site 안의 index.html 파일을 브라우져로 열어보시길 바랍니다. 
index.html의 좌측을 보시면 pom.xml에 담길수 있는 모든 정보들이 보이는 것을 알 수 있습니다.

pom.xml에 담길수 있는 정보들은 다음과 같습니다.

DocumentDescription
About이 Project에 대한 간략한 서술을 적습니다.
Project Team팀 맴버에 대한 정보를 담습니다. email과 같은 연락 수단역시 이곳에 담겨집니다.
Dependency Information만약에 이 project를 다른 maven project에서 연결해서 사용할 때, pom.xml에 설정할 정볼르 담습니다.
Project Plugins이 Project를 compile 할때, 사용된 maven plug in에 대한 정보를 담습니다.
Continuous Integration이 Project가 관리되는 CI의 URL을 적습니다.
Issue Tracking이 Project가 관리되는 Issue Tracker의 주소를 적습니다.
Source Repository이 Project가 관리되는 svn의 정보를 적습니다.
Project License이 Project의 license를 기록합니다.
Plugin Management이 project가 Build될 때, 사용된 maven plug in에 대한 버젼 정보등 상세 정보를 기록 합니다.
Distribution Management이 Project의 배포 서버를 적습니다.
Project SummaryProject의 버젼 정보 및 GroupId, ArticleId 등을 기록합니다.
Mailing ListsProject에 대한 Mailing list를 적습니다.
DependenciesProject가 참조하는 library들에 대한 정보가 기록됩니다.

엄청나게 많은 정보가 pom.xml에 기록됨을 알 수 있습니다. 어찌보면 project의 상세 명세서와 동일하다고 할 수 있습니다. 여기서 가장 유용하게 쓰이는 것은 Dependencies에 대한 정보입니다.

http://mvnrepository.com/ 에 방문해보시길 바랍니다. 이 사이트는 maven을 통해서 배포가 되는 라이브러리들이 위치한 사이트입니다. 우리가 maven에 특정 library를 등록하고 저장을 하면, maven은 자동으로 파일을 다운받아서 우리가 만든 프로젝트에 include 시킵니다.

지금 프로젝트에서는 junit 3.8.1이 사용되고 있지만, 이를 junit 4.11로 변경해보도록 하겠습니다. pom.xml에서 junit 3.8.1 부분을 찾아, version을 4.11로 바꿔주시고, pom.xml 파일을 저장해주세요. 저장을 하기 전에는 junit 3.8.1이 maven dependency에 들어있었지만, 저장 후, 바로 junit 4.11로 바뀌는 것을 알 수 있습니다.



maven을 이용하기 전에 어떤 jar를 다운받아서 project에 포함시키는 여러 작업들이 이제는 아무런 필요가 없습니다. 이건 모두 maven이 대신 해주게 되니까요. 그리고, maven에서 repository path를 설정해줬던 path에 한번 가서 파일을 봐보시길 바랍니다. 그곳에 파일들이 모두 위치하고 있는 것을 알 수 있습니다. 이것이 maven을 이용한 dependency 관리입니다.






자, 이젠 maven을 이용한 project 관리를 한번 봐보시도록 하겠습니다. 지금 보면 project의 java version이 1.5로 되어 있는 것을 알 수 있습니다. 이것을 pom.xml 파일을 변경하는 것으로 1.7로 변경하도록 합시다. pom.xml 파일에 다음 내용을 기록합니다.

그리고 project의 우클릭후, maven > update project를 선택해줍시다. 그럼, project가 JDK 1.5에서 1.7로 변경되어 있는 것을 알 수 있습니다.

간단한 코드를 짜보도록 하겠습니다. 
실제 개발 코드는 모두 src/main에 위치해야지 됩니다. 안에 HelloWorld 객체를 만들고, 두개의 method를 추가해줍니다.

 1public class HelloWorld {
 2    public String sayHello(String name) {
 3        return "Hello " + name;
 4    }
 5    public String sayHi(String name) {
 7        return "Hi " + name;
 8    }
 9}

그리고 테스트 코드를 작성합니다. 테스트 코드에 대해서는 다음 시간에 깊게 들어갈 예정이니 지금은 그냥 만들어주시기만 하면 됩니다. 테스트 코드는 모두 src/test에 위치해야지 됩니다. 그리고, 반드시 객체의 이름은 Test로 끝나야지 됩니다. 규칙을 만들어주기 편하게 하기 위해서 more unit의 기능을 이용하도록 합시다.

1public class HelloWorldTest {
2    @Test3    public void test() {
4        System.out.println("test running");
5    }
6}

그리고 console창에서 다음 명령어를 실행해보세요.

mvn test

maven이 test를 행하는 것을 알 수 있습니다. maven은 기본적으로 compile, test, package, install 이라는 phase를 갖습니다. 이 phase는 서로간에 종속적입니다.
compile > test > package > install 이라는 과정을 반드시 거치게 되지요. package를 할 때는 반드시 compile과 test를 거친 이후에 package phase가 실행이 되는 구조입니다. 따라서, test code를 잘 다듬지 못하면 배포 자체를 못하게 될 때도 있습니다.



Summary

maven을 이용한 test project를 만들어봤습니다. maven의 folder구조는 잘 숙지를 하고 계셔야지 됩니다. maven의 많은 plug in들은 이 folder구조가 유지되는 것을 전제로 움직입니다.


Posted by Y2K
,

* 사내 강의용으로 사용한 자료를 Blog에 공유합니다. Spring을 이용한 Web 개발에 대한 전반적인 내용에 대해서 다루고 있습니다.



이번 장에서는 전자정부 표준 프레임워크에 대해서 알아보도록 하겠습니다.

전자 정부 표준프레임워크는 국가 정보화 투자 효율성 제고, 중소 SI 경쟁력 확보, 선진 국가정보화 추진 기반환경의 제공이라는 목적하에 2007년 12월부터 시작하여 2010년 11월까지 총 3단계에 걸쳐 사업이 진행된 결과입니다. 
최종적으로는 효율적 운영에 필수적인 "운영환경" 및 47종의 공통 컴포넌트를 선정하고 신규 사업 및 고도화 사업을 대상으로 점진적 확대 적용을 하고 있는 추세입니다. 당장 정부쪽 SI 사업은 모두 이 전자정부 표준 프레임워크를 통해서 구축, 운영되고 있습니다. 국가대표포털, 기업 경쟁력 지원 등 총 69개의 공공,민간 정보화 사업(89개 System)에 적응되었습니다. (2011년 2월 기준) 그리고 정부 소프트웨어 기술성 평가 기준에 표준 프레임워크 도입여부를 반영함으로서 표준프레임워크 도입을 하지 않으면 정부측 SI를 할 수 없게 막아버린 효과를 가져왔습니다.


해야지 됩니다. 지금 이 바닥에서 먹고 살려면요. ㅋ



표준 프레임워크의 개발 - 개념

전자 정부 프레임워크의 구축 이유 : 정보 시스템 개발을 위해 필요한 기능 및 아키텍쳐를 미리 만들어 제공함으로써 효율적인 애플리케이션 구축을 지원하고 있습니다.
개발프레임워크는 일련의 문제 해결을 위한 추상화된 디자인을 구현한 클래스들의 집합으로서 클래스 보다는 큰 규모의 재사용을 지원하는 것을 목적으로 가지고 있습니다. 라이브러리와 개발 프레임워크의 차이는 어플리케이션의 틀과 구조를 프레임워크에서 제어하며, 프레임워크 위에서 개발자의 코드가 동작하는 차이가 있습니다. 반면에 라이브러리는 개발자의 코드 안에서 재 사용되는 것을 총칭합니다.






정부가 기대하는 전자 정부 프레임워크의 효과는 다음과 같습니다.

  1. 전자 정부 서비스의 품질 향상
  2. 정보화 투자 효율성의 향상
  3. 대/중/소 기업이 동일한 개발기반 위에서 공정경쟁을 한다.

라는 효과를 표방하고 있습니다. 개인적으로는 3번째인 대/중/소 기업이 동일한 개발기반 위에서 공정 경쟁을 한다는 것이 인상적인데요. 공정 경쟁이라는 것이 어떤 것인가.. 라는 생각은 조금 하게됩니다. 다행인 것이 예전의 my platform과 같은 기업 독자적인 framework를 따로 공부를 해야지 되는 상황은 조금 피하게 된 것 같습니다.



표준 프레임워크의 개발

실행, 개발, 운영 등 4개의 환경과 13개의 서비스 그룹, 그리고 54개의 서비스로 구성. 대기업/중소기업 대상 온라인 설문과 인터뷰 및 자료조사를 통해 구축되었습니다. 구축 과정을 보시면 아시겠지만, 설문조사를 기반으로 개발되었습니다. 현장에서 주로 사용되고 있는 open source framework가 무엇인지에 대한 설문 조사 결과가 표준프레임워크이다. 라고 할 수 있습니다. 다음은 각 open source의 선정 기준입니다.






표준 프레임워크의 개발 범위

표준 프레임워크의 개발 범위는 다음과 같습니다.





Open source framework & library

그리고, 선정된 Open source 및 Solution은 다음과 같습니다. (2010년 8월 기준)
레이어서비스명open sourcedescriptionurl
화면처리ajax supportAjax Tags 1.5jquery로 인하여 거의 사용되지 않음http://sourceforge.net/projects/ajaxtags/?source=navbar
InternationalizationSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
MVCSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
SecurityApache Commons Validator 1.3
UI Adaptor선정하지 않음
업무처리Process ControlSpring Web Flow 3.0http://springsource.org
Exception HandlingSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
데이터 처리Data AccessiBatis SQL Maps 2.3
Data SourceSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
ORMHibernatehttp://www.hibernate.org
TransactionSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
연계 통합Naming Service SupportSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
Integration Service선정하지 않음
Web Service InterfaceApache CXF 2.2
공통 기반AOPSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
CacheEhcache
Compress/DecompressApache Commons Compress 1.0
Encryption/Decryptionjava simplified encrypion (jasypt) 1.5
ExcelApache POI 3.0Excel File Handling
File HandlingJakarta Commons VFS 1.0
File Upload/DownloadApache Commons FileUpload 1.2
FTPApache Commons NET 2.0
ID Generator선정하지 않음UUID 생성 기능 개발
IoC ContainserSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
LoggingLog4j 1.3
MailApache Commons Email 1.1
Marsharling/unmarsharlingCastor 1.2, Apache XML Beans 2.4
PropertySpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
ResourceSpring 2.52012년 8월 Spring 3.1로 upgradehttp://www.springsource.org
SchedulingQuartz 1.6
Server SecuritySpring Security 2.0http://www.springsource.org
String UtilsJakarta Regexp 1.5
XML ManipulationApache Xerces2 2.9, JDOM 1.0
MobileMobile WebJquery Mobile 1.22012년 8월 선정

개발 Tool

EditorEclipse
AmaterasUML
AmaterasERD
DebugEcliopse
Unit TestJUnit
Easy Mock
Dbunit
emma
ant
maven
Buildmaven
hudson
jenkins
Configuration managementSVN
Change ManagementjTrac

보시면 아시겠지만, 35개의 open source component (개발 환경 제외)중에서 10개가 Spring입니다. 그리고 나머지 기능들에서 Spring 기능을 사용한 Web Flow와 Security를 합치면 1/3이 Spring이라고 할 수 있습니다. 거기에다가 Excel, Encrypt/decrypt와 같은 일반 기능성 component를 제외시키면 그냥 정부 표준 프레임워크는 spring framework를 사용해서 만드는 것이다. 라고 할 수도 있습니다. 이제 java를 알아도 개발을 하지 못하고, spring을 알아야지만 개발을 할 수 있는 상황이 되어버렸습니다.


정부 표준 프레임워크의 특징

  • 5개 서비스 그룹, 34개 서비스로 구성
    • 화면처리, 업무처리, 데이터처리, 연계통합, 공통기반의 5개 서비스 그룹으로 구성
    • MVC, IoC 컨테이너, AOP, Data Access, Integration 등의 핵심 서비스를 제공
  • 전자정부 프로젝트에 최적화된 오픈 소스 소프트웨어 선정
    • 34개 서비스 별 최적의 오픈 소스 소프트웨어 선정 과정을 통해 32개 오픈 소스 소프트웨어를 선정
  • 경량화된 개발프레임워크로서 사실상 업계 표준에 가까운 Spring 프레임워크를 적용
    • J2EE 표준을 준수하는 Spring 프레임워크를 채택
    • 특정 업체의 WAS나 DBMS에 독립적인 환경을 제공
  • DI 방식의 의존 관계 처리
    • Dependency Injection을 통해 개체나 컴포넌트 간의 의존성을 정의함으로써 변경용이성과 재사용성을 향상
  • AOP 지원
    • 트랜잭션, 예외처리와 같은 공통 관심 대상을 분리하여 정의함
  • MVC Model2 아키텍처 구조 제공 및 다양한 UI 클라이언트 연계 지원
    • Spring MVC를 기반으로 하며, 다양한 UI 클라이언트 연계를 위한 인터페이스를 정의함
  • 전자정부 개발프레임워크 표준 연계 인터페이스 정의
    • 표준 연계 인터페이스를 정의하여 연계 솔루션에 대한 의존성을 배제하고 독립적인 어플리케이션 개발이 가능함

이와 같이 정부 표준 프레임워크가 어떻게 구성이 되어있는지에 대해서 간략하게 알아봤습니다. 그럼 다음 장에서는 정부 표준 프레임워크를 이용한 개발 환경의 구성을 해보도록 하겠습니다.


Posted by Y2K
,