철골(프레임워크)
Grails (framework)개발자 | 그레미 로처 |
---|---|
초기 릴리즈 | 2005년 10월 |
안정된 릴리스 | 5.2.2 / 2022년8월 3일 |
저장소 | Grails 저장소 |
기입처 | 그루비 |
운영 체제 | 크로스 플랫폼 |
플랫폼 | 크로스 플랫폼(JVM) |
유형 | 웹 응용 프로그램 프레임워크 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | grails |
Grails는 Apache Groovy 프로그래밍 언어(Java 플랫폼 기반)를 사용하는 오픈 소스 웹 응용 프로그램 프레임워크입니다.「컨벤션으로 코드화」패러다임을 따르고, 스탠드아론 개발 환경을 제공해,[citation needed] 설정의 상세한 내용을 개발자에게 숨기는 것으로, 생산성이 높은 프레임워크가 되는 것을 목적으로 하고 있습니다.
Grails는 이전에는 "Groovy on Rails"[1]라고 불렸습니다.2006년 3월, Ruby on Rails 프레임워크의 설립자인 David Heinemier Hanson의 요청에 따라 이 이름은 폐기되었습니다.작업은 2005년 7월에 시작되었으며, 2006년 3월 29일에 0.1 릴리스가 발표되었으며, 2008년 2월 18일에 1.0 릴리스가 발표되었습니다.
개요
Grails는 다음과 같은 여러 가지 목표를 달성하기 위해 개발되었습니다.
- Java 플랫폼용 웹 프레임워크를 제공합니다.
- 하이버네이트나 스프링 등의 기존 Java 테크놀로지를 단일 인터페이스로 재사용할 수 있습니다.
- 일관된 개발 프레임워크를 제공합니다.
- 프레임워크의 주요 부분에 대한 문서를 제공합니다.
- 프레임워크를 보여주는 샘플 어플리케이션을 제공합니다.
- 웹 서버 및 리소스 자동 새로고침 등 완전한 개발 모드를 제공합니다.
높은 생산성
Grails에는 기존 Java 웹 프레임워크와 구별되는 세 가지 속성이 있습니다.
XML 구성 없음
Java에서 웹 애플리케이션을 작성하려면 일반적으로 개발 시작 시 및 개발 중에 환경과 프레임워크를 구성해야 합니다.이 설정은 설정을 용이하게 하고 설정이 애플리케이션코드에 짜넣어지는 것을 피하기 위해서 XML 파일에 외부화되어 있는 경우가 많습니다.
XML은 애플리케이션 구성의 일관성을 높였기 때문에 처음에는 환영받았습니다.그러나 최근 몇 년 동안 XML이 구성에 적합하지만 환경을 설정하는 데 시간이 많이 걸릴 수 있다는 것이 분명해졌습니다.이로 인해 개발자들은 애플리케이션 확장에 따라 프레임워크 구성을 이해하고 유지하는 데 시간을 할애할 수 있기 때문에 생산성이 저하될 수 있습니다.XML 구성을 사용하는 애플리케이션에서 기능을 추가하거나 변경하면 변경 프로세스에 추가 단계가 추가되어 생산성이 저하되고 프로세스 전체의 민첩성이 저하될 수 있습니다.
Grails를 사용하면 XML 파일에 구성을 추가할 필요가 없습니다.대신 프레임워크는 Grails 기반 응용 프로그램의 코드를 검사하는 동안 규칙 또는 규칙 집합을 사용합니다.예를 들어 다음과 같이 끝나는 클래스 이름Controller
(예:BookController
)는 웹 컨트롤러로 간주됩니다.
즉시 사용할 수 있는 개발 환경
기존 Java 웹 툴킷을 사용할 경우 개발자가 개발 유닛을 조립해야 하기 때문에 번거로울 수 있습니다.Grails는 개발자를 즉시 시작할 수 있는 웹 서버를 포함하는 개발 환경을 제공합니다.필요한 라이브러리는 모두 Grails 배포의 일부이며 Grails는 Java 웹 환경을 자동으로 배포하기 위해 준비합니다.
믹스인을 통해 이용할 수 있는 기능
Grails는 여러 클래스에서 믹스인을 통한 동적 메서드를 특징으로 합니다.mixin은 해당 기능이 프로그램에 컴파일된 것처럼 클래스에 동적으로 추가되는 메서드입니다.
이러한 동적 메서드를 통해 개발자는 인터페이스를 구현하거나 기본 클래스를 확장하지 않고도 작업을 수행할 수 있습니다.Grails는 클래스 유형에 따라 동적 메서드를 제공합니다.예를 들어 도메인 클래스에는 저장, 삭제, 검색 등의 지속성 작업을 자동화하는 방법이 있습니다.
웹 프레임워크
Grails 웹 프레임워크는 MVC 패러다임에 따라 설계되었습니다.
컨트롤러
Grails는 컨트롤러를 사용하여 웹 페이지의 동작을 구현합니다.다음으로 컨트롤러의 예를 나타냅니다.
학급 북 컨트롤러 { 방어하다 목록.() { [ 서적: 책.목록.() ] } }
위의 컨트롤러에는list
데이터베이스의 모든 도서가 포함된 모델을 반환하는 작업입니다.이 컨트롤러를 작성하려면grails
다음과 같이 명령어가 사용됩니다.
grails 작성 컨트롤러 북
이 명령어는 에 클래스를 만듭니다.grails-app/controller
Grails 프로젝트의 디렉토리.컨트롤러 클래스를 만드는 것으로는 Grails에서 인식하기에 충분합니다.그list
액션 맵http://localhost:8080/book/list
디벨로프먼트모드로 하겠습니다
표시
Grails는 JSP 및 GSP를 지원합니다.다음 예시는 GSP로 작성된 뷰를 보여 줍니다.이 뷰는 위의 컨트롤러에 의해 준비된 모델 내의 도서를 나열합니다.
<boot> <head> <boot> <thead></books> </head> </body> <ul> <g:각인="${books}"> <li>${it.books}(${it}).author.name}) </li> </g: 각> </ul> </body> </body> </body>
이 보기는 다음과 같이 저장해야 합니다.grails-app/views/book/list.gsp
그레일즈 프로젝트의 일부입니다.이 로케이션은BookController
그리고.list
액션.이 위치에 파일을 배치하면 Grails가 파일을 인식할 수 있습니다.
GSP 태그 참조도 이용할 수 있습니다.
동적 태그 라이브러리
Grails는 개봉 즉시 다수의 태그 라이브러리를 제공합니다.그러나 자체 태그 라이브러리를 [2]쉽게 만들고 재사용할 수도 있습니다.
학급 ApplicationTagLib { 방어하다 포맷 날짜 = { 특성, 몸 -> 나가. << > 신규 자바.본문.SimpleDateFormat(단순 날짜 형식)(특성.포맷).포맷(특성.날짜.) } }
그formatDate
위의 태그 라이브러리 형식 ajava.util.Date
에 반대하다.String
이 태그 라이브러리는 에 추가해야 합니다.grails-app/taglib/ApplicationTagLib.groovy
파일 또는 파일로 끝나는 파일TagLib.groovy
에서grails-app/taglib
디렉토리로 이동합니다.
다음으로 GSP 파일의 일부를 나타냅니다.formatDate
태그 라이브러리:
<g: format Date format="yyyyMMdd" date="${myDate}"/>
GSP에서 다이내믹태그 라이브러리를 사용하려면 Import 태그를 사용할 필요가 없습니다.동적 태그 라이브러리는 JSP 파일에서도 사용할 수 있습니다.다만, 이것에는 약간의 작업이 필요합니다.[1]
고집
모델
Grails의 도메인 모델은 GORM(Grails Object Relational Mapping)을 사용하여 데이터베이스에 유지됩니다.도메인 클래스는grails-app/domain
를 사용하여 생성할 수 있습니다.grails
명령어를 다음에 나타냅니다.
grailes create-domain 클래스 북
이 명령은 도메인 클래스 이름을 요청하고 적절한 파일을 만듭니다.의 코드 아래Book
클래스가 표시됩니다.
학급 책 { 스트링 직함 사람인 작가. }
Grails에서 지속성을 유지하기 위해 이 클래스를 관리하려면 이 클래스만 만들면 됩니다.Grailes 0.3에서는 GORM이 개선되어 속성 ID와 버전 자체가 존재하지 않는 경우 도메인 클래스에 추가됩니다.id 속성은 대응하는 테이블의 프라이머리 키로 사용됩니다.버전 속성은 최적의 잠금에 사용됩니다.
방법들
클래스를 도메인 클래스로 정의하면, 즉 GORM에 의해 관리되는 클래스가 동적으로 추가되어 클래스의 인스턴스를 유지하는 데 도움이 됩니다.[2]
다이내믹 인스턴스 방식
그save()
method는 객체를 데이터베이스에 저장합니다.
방어하다 책 = 신규 책(제목:다빈치 코드, 작성자:작가..find By Name(이름 검색)(댄 브라운)) 책.절약하다()
그delete()
method는 데이터베이스에서 개체를 삭제합니다.
방어하다 책 = 책.Find By Title(검색 기준)(다빈치 코드) 책.삭제하다()
그refresh()
method는 데이터베이스에서 오브젝트 상태를 새로 고칩니다.
방어하다 책 = 책.Find By Title(검색 기준)(다빈치 코드) 책.리프레시()
그ident()
method는 데이터베이스에서 할당된 개체의 ID를 검색합니다.
방어하다 책 = 책.Find By Title(검색 기준)(다빈치 코드) 방어하다 아이디 = 책.식별하다()
다이내믹 스태틱(클래스) 방식
그count()
method는 지정된 클래스의 데이터베이스 레코드 수를 반환합니다.
방어하다 북카운트 = 책.세어보세요()
그exists()
지정된 식별자를 가진 개체가 데이터베이스에 있는 경우 method는 true를 반환합니다.
방어하다 도서외부자 = 책.존재한다(1)
그find()
method는 object query 문을 기반으로 데이터베이스에서 첫 번째 개체를 반환합니다.
방어하다 책 = 책.발견하다("북 b에서 b.199 =?", [ '다빈치 코드' ])
쿼리 구문은 HQL(Hibernate HQL)입니다.
그findAll()
method는 데이터베이스에 존재하는 모든 개체를 반환합니다.
방어하다 책들 = 책.모두 검색()
그findAll()
메서드는 오브젝트 목록을 반환하기 위해 오브젝트 쿼리 문을 사용할 수도 있습니다.
방어하다 책들 = 책.모두 검색("책에서")
그findBy*()
메서드는 데이터베이스에서 특정 패턴과 일치하는 첫 번째 개체를 반환합니다.
방어하다 책 = 책.Find By Title(검색 기준)(다빈치 코드)
기타:
방어하다 책 = 책.find By Title Like (제목 검색)(다빈치%)
그findAllBy*()
메서드는 데이터베이스에서 특정 패턴과 일치하는 오브젝트 목록을 반환합니다.
방어하다 책들 = 책.find All By Title Like (모든 제목과 유사)("The %")
그findWhere*()
methods는 데이터베이스에서 이름 있는 파라미터 세트와 일치하는 첫 번째 개체를 반환합니다.
방어하다 책 = 책.검색처(제목:다빈치 코드)
비계
Grails는 CRUD 작업(작성, 읽기, 업데이트, 삭제)을 지원하는 발판을 지원합니다.다음과 같이 비계 컨트롤러를 생성하여 모든 도메인 클래스를 비계화할 수 있습니다.
학급 북 컨트롤러 { 정적인 발판 = 진실의 }
이 클래스를 작성하면 위에서 CRUD 작업을 수행할 수 있습니다.http://localhost:8080/book
이것은 BookController가 Book 도메인 클래스와 동일한 명명 규칙을 따르기 때문에 작동합니다.특정 도메인 클래스를 비계화하기 위해 비계 속성에서 직접 클래스를 참조할 수 있습니다.
학급 일부 컨트롤러 { 정적인 발판 = 책 }
현재 Grails는 협회를 위한 발판을 제공하지 않는다.
레거시 데이터베이스 모델
GORM의 지속성 메커니즘은 휴지 상태를 통해 구현됩니다.따라서 레거시 데이터베이스는 표준 휴지 상태 매핑 파일을 사용하여 GORM 클래스에 매핑될 수 있습니다.
대상 독자
Grails의 대상 독자는 다음과 같습니다.
- 웹 기반 애플리케이션을 만들기 위한 통합 개발 환경을 찾고 있는 Java 또는 Groovy 개발자.
- Java 경험이 없는 개발자는 웹 기반 애플리케이션을 [citation needed]구축하기 위해 생산성이 높은 환경을 찾습니다.
Java 플랫폼과의 통합
Grails는 Java 플랫폼 위에 구축되어 있으며 Java 라이브러리, 프레임워크 및 기존 코드 베이스와의 통합이 매우 용이합니다.Grails는 Hibernate ORM 프레임워크로 매핑된 클래스를 투명하게 통합합니다.즉, Hibernate를 사용하는 기존 응용 프로그램은 위에서 설명한 동적 지속 방법을 사용하여 코드를 다시 컴파일하거나 Hibernate 클래스를 재구성하지 않고도 Grails를 사용할 수 있습니다.[3]
그 결과 Hibernate로 매핑된 Java 클래스에 대해 발판을 구성할 수 있습니다.또 다른 결과는 Grails 웹 프레임워크의 기능이 이러한 클래스와 이를 사용하는 애플리케이션에 완전히 사용 가능하다는 것입니다.
또한 Grails는 제어 프레임워크의 스프링 반전 기능을 사용합니다. Grails는 실제로 [3]후드 아래에 있는 스프링 MVC 애플리케이션입니다.스프링 프레임워크는 스프링 콩을 추가로 프로비저닝하여 애플리케이션 컨텍스트에 도입하는 데 사용할 수 있습니다.SiteMesh 프레임워크는 프레젠테이션 계층을 관리하기 위해 사용되며 강력한 템플릿 [4]시스템을 통해 페이지 개발을 단순화합니다.
Grails 응용 프로그램은 모든 서블릿 컨테이너 또는 Java EE 응용 프로그램 서버에 배포할 수 있는 전쟁 아티팩트로 패키지됩니다.
「 」를 참조해 주세요.
- 그루비(프로그래밍 언어)
- JRuby
- Griffon (프레임워크), Grails에서 영감을 얻은 데스크톱 프레임워크
- 스프링루
- 웹 프레임워크 비교
레퍼런스
- ^ Rocher, Graeme. "Groovy on Rails is no more (kind of)". Archived from the original on 7 May 2010.
- ^ 7.3 태그 라이브러리
- ^ "Grails Documentation".
- ^ "Slideshare Presentation".
- Brown, Jeff; Rocher, Graeme (January 15, 2009), The Definitive Guide to Grails (2nd ed.), Apress, p. 648, ISBN 1-59059-995-0
- Smith, Glen; Ledbrook, Peter (June 28, 2009), Grails in Action (1st ed.), Manning Publications, p. 520, ISBN 1-933988-93-2
- Abdul-Jawad, Bashar (December 2, 2008), Groovy and Grails Recipes (1st ed.), Apress, p. 424, ISBN 978-1-4302-1600-1
- Fischer, Robert (April 20, 2009), Grails Persistence with GORM and GSQL (1st ed.), Apress, p. 125, ISBN 1-4302-1926-2, archived from the original on December 16, 2009, retrieved October 22, 2009
- M. Judd, Christopher; Nusairat, Joseph Faisal; Shingler, Jim (June 18, 2008), Beginning Groovy and Grails: From Novice to Professional (1st ed.), Apress, pp. 440, ISBN 1-4302-1045-1
- Rudolph, Jason (February 6, 2007), Getting Started with Grails (1st ed.), Lulu.com, p. 132, ISBN 1-4303-0782-X
외부 링크
책들
- Rocher, Graeme Keith (2009). The definitive guide to Grails (2nd ed.). Berkeley, CA: Apress. ISBN 9781590599952.
- Brown, Jeff; Rocher, Graeme (2013). The definitive guide to Grails 2. [New York]: Apress. ISBN 9781430243779.