위 글은 Atlassian Developer Blog에 있는 Grails Application Framework에 대한 개발 가이드라인입니다.
Atlassian Developer Blog의 RSS를 통해 얻은 양질의 글들을 접하다가 위 글이 흥미로워서 이렇게 소개하고자 합니다.
우선 Grails, Acegi에 대해 간단하게 설명하도록 하겠습니다.
Grails는 높은 생산성을 보장하는 오픈 소스 웹 어플리케이션 프레임워크입니다.
Grails는 높은 생산성을 제공하기 위해 CoC (Convention over Configutration)의 철학을 따르고 있습니다. 따라서 어플리케이션의 구조 또한 이러한 철학을 반영하고 있습니다.
보
통의 자바 웹어플리케이션은 어플리케이션의 루트 폴더를 만들고 이 폴더 안에 WEB-INF에 컴파일된 클래스파일과 설정 파일 또한
라이브러리 파일을 위치하여 배포 하게 됩니다. 반면에 Grails는 자체적으로 미리 정의된 폴더구조에 위와 같은 웹어플리케이션
리소스를 위치시킨 후, 실행시에 빌드과정을 거쳐 기존의 자바 웹어플리케이션 구조(war 파일)를 만듭니다.
Grails는 MVC 패턴을 따르는 구조로 되어 있습니다. 따라서 어플리케이션 구조의 폴더구조도 이를 반영하고 있습니다.
각 폴더는 다은과 같은 역할을 담당 한다.(+는 하위 폴더를 말한다.)
grails-app : Grails어플리케이션의 핵심 리소스 및 소스를 위치시킬 폴더이다.
+ conf : 어플리케이션의 모든 설정 클래스 및 파일을 위치시킨다 (예: DataSource.groovy)
+ controllers : 어플리케이션의 MVC클래스 중 Controller에 해당하는 소스파일을 위치 시킨다.
+ domain : MVC 중 Model, 즉 DB와 ORM매핑이 되는 클래스 소스파일을 위치 시킨다.
+ i18n : 국제화용 메시지 파일이 위치되는 곳이다.
+ service : MVC에 해당하는 클래스 이외에 어플리케이션에서 사용하는 비즈니스스 로직 소스를 담는다.
+ taglib : View의 커스텀 태그 라이브러리를 위치시키는 곳이다.
+ views : MVC의 View(GSP)소스가 위치되는 곳이다.
+ layouts :View에 적용되는 공통 레이아웃 이 위치되는 곳이다.
grails-test : 자동화된 단위테스르를 위한 테스트케이스가 위치되는 곳이다.
hibernate : Model을 기본 ORM이아닌 hibernate의 매핑파일로 만들경우 이것이 위치되는 곳이다.
lib : 어플리케이션에서 사용되는 모든 외부 라이브러리는 이곳에 위치되어어야 한다.
spring : Spring bean을 사용할 경우 Spring 설정 xml파일을 위치시키는 곳이다.
src : 외부 라이브러리 이외에 직접 만든 Java나 Groovy파일을 사용하려면 이곳에 위치시킨다.
+ Java
+ groovy
web-app : 이곳이 빌드과정을 거치면 일반 Java웹어플리케이션 구조로 담겨지는 곳이다.
즉, 이폴더가 WAR로 묶여진다.
실제 어플리케이션 개발에서 가장 많이 사용되는 폴더는 grails-app밑의 폴더들입니다.
Grails
는 빌드에 해당하는 명령을 실행하면 (예 : grails run-app 또는 grails war등) 각 어플리케이션 폴더의 소스
및 리소스를 컴파일하고 이 결과를 web-app아래의 구조에 배포합니다. 그러면 이 web-app안의 웹어플리케이션이 컨테이너에서
실행 되게 됩니다. 일반적인 Java웹 어플리케이션 구조가 없는 듯하지만, 사실 web-app밑에 들어가 보면 이 구조를 확인
할 수 있습니다.
눈여겨 볼 것은 hibernate 와 spring 폴더인데 실제 이를 이용하면 거의 대부분의 기존 자바 라이브러리 및 오픈소스 등을 통합하여 사용할 수 있습니다. spring의 통합 능력을 그대로 사용할 수 있는 것입니다.
과거에는 Acegi Security Framework로 알려져 있었지만, 현재는 Spring Framework의 서브
프로젝트로서 Spring Security Framework으로 정식 사용되고 있습니다. 웹 어플리케이션을 위한
Authentication, Authorization, Access Control, PKI 등의 강력한 보안기능을 제공합니다.
더 자세한 내용을 보고 싶다면
http://www.springframework.org에 가셔서 확인하시면 됩니다.
를 적용하여 강력한 보안기능을 제공하는 웹 어플리케이션을 구축하는 방법을 자세하게 소개합니다. 주목할 만한 사항은 AppFuse와 유사하게 웹 어플리케이션을 자동으로 생성한다는 것과 Spring을 통해 Grails, Acegi, Crowd를 통합한다는 것입니다. 그리고 Acegi Security Plugin을 적용하여 Grails에서 Acegi를 적용할 수 있는 환경을 자동으로 구축한다는 것입니다. 자세한 내용은 상단에 링크된 문서를 참고하시기 바랍니다. 그럼 이만...