Эта статья содержит контент, который написан как реклама . ( Октябрь 2010 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Разработчики) | Грэм Роше |
---|---|
Начальная версия | Октябрь 2005 г. |
Стабильный выпуск | 4.0.9 [1] / 11 марта 2021 г . |
Репозиторий | Репозиторий Grails |
Написано в | Groovy |
Операционная система | Кроссплатформенность |
Платформа | Кроссплатформенность ( JVM ) |
Тип | Фреймворк веб-приложений |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | grails |
Grails - это среда веб-приложений с открытым исходным кодом, в которой используется язык программирования Apache Groovy (который, в свою очередь, основан на платформе Java ). Он задуман как высокопроизводительный фреймворк, следуя парадигме « кодирования по соглашению », предоставляя автономную среду разработки и скрывая большую часть деталей конфигурации от разработчика. [ необходима цитата ]
Ранее Grails назывался «Groovy on Rails»; в марте 2006 года это название было отказано в ответ на запрос Дэвида Хайнемайера Ханссона , основателя фреймворка Ruby on Rails . [2] Работа началась в июле 2005 года, релиз 0.1 состоялся 29 марта 2006 года, а релиз 1.0 был объявлен 18 февраля 2008 года.
Обзор [ править ]
Grails был разработан для решения ряда задач:
- Обеспечьте веб-фреймворк для платформы Java.
- Повторное использование существующих технологий Java, таких как Hibernate и Spring, в едином интерфейсе.
- Предложите последовательную основу для разработки.
- Предлагаем документацию по ключевым частям фреймворка:
- Постоянство рамки.
- Шаблоны с использованием GSP (Groovy Server Pages).
- Библиотеки динамических тегов для создания компонентов веб-страниц.
- Настраиваемая и расширяемая поддержка Ajax .
- Предоставьте образцы приложений, демонстрирующих структуру.
- Обеспечьте полный режим разработки, включая веб-сервер и автоматическую перезагрузку ресурсов.
Высокая производительность [ править ]
У Grails есть три свойства, которые отличают его от традиционных веб-фреймворков Java:
- Нет конфигурации XML
- Готовая среда разработки
- Функциональность доступна через миксины
Нет конфигурации XML [ править ]
Создание веб-приложений на Java традиционно включает настройку сред и фреймворков в начале и во время разработки. Эта конфигурация очень часто экстернализируется в файлах XML, чтобы упростить настройку и избежать встраивания конфигурации в код приложения.
Первоначально XML приветствовался, поскольку он обеспечивал большую согласованность при настройке приложений. Однако в последние годы стало очевидно, что, хотя XML отлично подходит для настройки, настройка среды может быть утомительной. Это может снизить производительность, поскольку разработчики тратят время на понимание и поддержку конфигурации инфраструктуры по мере роста приложения. Добавление или изменение функциональности в приложениях, использующих конфигурацию XML, добавляет дополнительный шаг к процессу изменения, что снижает производительность и может снизить гибкость всего процесса.
Grails избавляет от необходимости добавлять конфигурацию в файлы XML. Вместо этого структура использует набор правил или соглашений при проверке кода приложений на основе Grails. Например, имя класса, которое заканчивается на Controller
(например BookController
), считается веб-контроллером.
Готовая среда разработки [ править ]
При использовании традиционных наборов веб-инструментов Java разработчики должны собирать модули разработки, что может быть утомительным. Grails предоставляет среду разработки, которая включает веб-сервер, чтобы разработчики могли сразу начать работу. Все необходимые библиотеки являются частью дистрибутива Grails, и Grails автоматически подготавливает веб-среду Java к развертыванию.
Функциональность доступна через миксины [ править ]
Grails предоставляет динамические методы для нескольких классов через примеси. Примесь - это метод, который динамически добавляется к классу, как если бы функциональность была скомпилирована в программу.
Эти динамические методы позволяют разработчикам выполнять операции без необходимости реализации интерфейсов или расширения базовых классов. Grails предоставляет динамические методы в зависимости от типа класса. Например, в доменных классах есть методы для автоматизации операций сохранения, таких как сохранение, удаление и поиск.
Веб-фреймворк [ править ]
Веб-фреймворк Grails был разработан в соответствии с парадигмой MVC .
Контроллеры [ править ]
Grails использует контроллеры для реализации поведения веб-страниц. Ниже приведен пример контроллера:
class BookController { def list () { [ книги: Книга . list () ] } }
Вышеупомянутый контроллер имеет list
действие, которое возвращает модель, содержащую все книги в базе данных. Для создания этого контроллера используется grails
команда, как показано ниже:
Grails создать-контроллер Book
Эта команда создает класс в grails-app/controller
каталоге проекта Grails. Создание класса контроллера достаточно, чтобы Grails распознал его. list
Действие сопоставляется http://localhost:8080/book/list
в режиме разработки.
Просмотры [ править ]
Grails поддерживает JSP и GSP. В приведенном ниже примере показано представление, написанное на GSP, в котором перечислены книги в модели, подготовленной указанным выше контроллером:
<html> <head> <title> Наши книги </title> </head> <body> <ul> <g: each in = "$ {books}" > <li> $ {it.title} ($ { it.author.name}) </li> </ g: each> </ul> </body> </html>
Это представление должно быть сохранено как grails-app/views/book/list.gsp
проект Grails. Это расположение карты к BookController
и list
действию. Размещение файла в этом месте достаточно, чтобы Grails распознал его.
Также доступна ссылка на тег GSP .
Библиотеки динамических тегов [ править ]
Grails предоставляет большое количество библиотек тегов прямо из коробки. Однако вы также можете легко создавать и повторно использовать свои собственные библиотеки тегов: [3]
class ApplicationTagLib { def formatDate = { attrs , body -> out << новый java . текст . SimpleDateFormat ( ATTRS . Формат ). формат ( аттр . дата ) } }
Приведенная formatDate
выше библиотека тегов форматирует java.util.Date
объект в String
. Эта библиотека тегов должна быть добавлена в grails-app/taglib/ApplicationTagLib.groovy
файл или файл, заканчивающийся TagLib.groovy
в grails-app/taglib
каталоге.
Ниже приведен фрагмент файла GSP, в котором используется formatDate
библиотека тегов:
<g: formatDate format = "yyyyMMdd" date = "$ {myDate}" />
Чтобы использовать библиотеку динамических тегов в GSP, не нужно использовать импортные теги. Библиотеки динамических тегов также можно использовать в файлах JSP, хотя для этого потребуется немного больше работы. [1]
Настойчивость [ править ]
Модель [ править ]
Модель предметной области в Grails сохраняется в базе данных с помощью GORM (объектно-реляционное сопоставление Grails). Классы домена сохраняются в grails-app/domain
каталоге и могут быть созданы с помощью grails
команды, как показано ниже:
Grails создать книгу класса домена
Эта команда запрашивает имя класса домена и создает соответствующий файл. Ниже Book
показан код класса:
class Book { String title Person author }
Создание этого класса - это все, что требуется для того, чтобы Grails управлял им для сохранения. В Grails 0.3 GORM был улучшен и, например, добавляет идентификатор свойств и саму версию в класс предметной области, если они отсутствуют. Свойство id используется как первичный ключ соответствующей таблицы. Свойство версии используется для оптимистической блокировки.
Методы [ править ]
Когда класс определяется как класс предметной области, то есть класс, управляемый GORM, методы динамически добавляются для помощи в сохранении экземпляров класса. [2]
Методы динамического экземпляра [ править ]
save()
Метод сохраняет объект в базу данных:
def book = new Book ( название: «Код да Винчи» , автор: Автор . findByName ( «Дэн Браун» )) книга . сохранить ()
delete()
Метод удаляет объект из базы данных:
def book = Книга . findByTitle ( «Код да Винчи» ) книга . удалить ()
refresh()
Метод обновляет состояние объекта из базы данных:
def book = Книга . findByTitle ( «Код да Винчи» ) книга . обновить ()
ident()
Метод извлекает идентификатор объекта , назначенный из базы данных:
def book = Книга . findByTitle ( «Код да Винчи» ) def id = book . идентификатор ()
Динамические статические (классовые) методы [ править ]
count()
Метод возвращает количество записей в базе данных для данного класса:
def bookCount = Книга . счет ()
exists()
Метод возвращает истину , если объект существует в базе данных с заданным идентификатором:
def bookExists = Книга . существует ( 1 )
find()
Метод возвращает первый объект из базы данных , основанных на операторе объекта запроса:
def book = Книга . find ( "из Книги b, где b.title =?" , [ 'Код да Винчи' ])
Обратите внимание, что синтаксис запроса - Hibernate HQL .
findAll()
Метод возвращает все объекты , существующие в базе данных:
def books = Книга . findAll ()
findAll()
Метод может также принять заявление объекта запроса для возвращения списка объектов:
def books = Книга . findAll ( "из книги" )
Эти findBy*()
методы возвращают первый объект из базы данных , которая соответствует шаблону конкретного:
def book = Книга . findByTitle ( «Код да Винчи» )
Также:
def book = Книга . findByTitleLike ( "% Да Винчи%" )
Эти findAllBy*()
методы возвращают список объектов из базы данных, соответствующих определенному шаблону:
def books = Книга . findAllByTitleLike ( "%" )
Эти findWhere*()
методы возвращают первый объект из базы данных , которая соответствует набору именованных параметров:
def book = Книга . findWhere ( название: «Код да Винчи» )
Строительные леса [ править ]
Grails поддерживает скаффолдинг для поддержки операций CRUD (создание, чтение, обновление, удаление). Любой доменный класс может быть создан путем создания контроллера строительных лесов, как показано ниже:
класс BookController { static scaffold = true }
Создав этот класс, вы можете выполнять операции CRUD http://localhost:8080/book
. Это работает, потому что BookController следует тому же соглашению об именах, что и класс домена Book. Чтобы сформировать определенный доменный класс, мы могли бы ссылаться на класс непосредственно в свойстве scaffold:
class SomeController { статический каркас = книга }
В настоящее время Grails не предоставляет строительные леса для ассоциаций.
Устаревшие модели баз данных [ править ]
Механизм сохранения в GORM реализован через Hibernate . Таким образом, унаследованные базы данных могут быть сопоставлены с классами GORM с помощью стандартных файлов сопоставления Hibernate .
Целевая аудитория [ править ]
Целевая аудитория Grails:
- Разработчики Java или Groovy, которым нужна интегрированная среда разработки для создания веб-приложений.
- Разработчики, не имеющие опыта работы с Java, ищут высокопроизводительную среду для создания веб-приложений. [ необходима цитата ]
Интеграция с платформой Java [ править ]
Grails построен поверх платформы Java и является ее частью, что означает, что ее очень легко интегрировать с библиотеками, фреймворками и существующими кодовыми базами Java. Grails предлагает прозрачную интеграцию классов, отображаемых в Hibernate ORM framework. Это означает, что существующие приложения, использующие Hibernate, могут использовать Grails без перекомпиляции кода или перенастройки классов Hibernate при использовании описанных выше методов динамического сохранения. [3]
Одним из следствий этого является то, что каркас может быть настроен для классов Java, отображаемых с помощью Hibernate. Другим следствием является то, что возможности веб-фреймворка Grails полностью доступны для этих классов и приложений, которые их используют.
Grails также использует Spring Inversion of Control Framework; На самом деле Grails - это скрытое приложение Spring MVC. [4] Среду Spring можно использовать для предоставления дополнительных компонентов Spring и их внедрения в контекст приложения. SiteMesh структура используются для управления уровнем представления, что упрощает разработку страниц с помощью надежной системы шаблонов. [5]
Приложения Grails упакованы как военные артефакты, которые можно развернуть в любом контейнере сервлетов или на серверах приложений Java EE.
См. Также [ править ]
- Groovy (язык программирования)
- JRuby
- Griffon (framework) , фреймворк для рабочего стола, вдохновленный Grails
- Spring Roo
- Сравнение веб-фреймворков
Ссылки [ править ]
- ^ "Выпуск 4.0.9" . 11 марта 2021 . Проверено 13 марта 2021 года .
- ^ Удаление имени Groovy на Rails
- ^ 7.3 Библиотеки тегов
- ^ "Документация Grails" .
- ^ «Презентация Slideshare» .
Эта статья включает в себя список общих ссылок , но он остается в значительной степени непроверенным, поскольку в нем отсутствует достаточное количество соответствующих встроенных ссылок . Октябрь 2012 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
- Браун, Джефф; Роше, Грэм (15 января 2009 г.), Полное руководство по Grails (2-е изд.), Apress , стр. 648, ISBN 1-59059-995-0
- Смит, Глен; Ледбрук, Питер (28 июня 2009 г.), Grails в действии (1-е изд.), Manning Publications , стр. 520, ISBN 1-933988-93-2
- Абдул-Джавад, Башар (2 декабря 2008 г.), Рецепты Groovy и Grails (1-е изд.), Apress , стр. 424, ISBN 978-1-4302-1600-1
- Фишер, Роберт (20 апреля 2009 г.), Сохранение Grails с GORM и GSQL (1-е изд.), Apress , стр. 125, ISBN 1-4302-1926-2, заархивировано из оригинала 16 декабря 2009 г. , извлечено 22 октября 2009 г.
- М. Джадд, Кристофер; Нусайрат, Джозеф Фейсал; Шинглер, Джим (18 июня 2008 г.), Начало Groovy и Grails: от новичка к профессионалу (1-е изд.), Apress , стр. 440 , ISBN 1-4302-1045-1
- Рудольф, Джейсон (6 февраля 2007 г.), Начало работы с Grails (1-е изд.), Lulu.com , стр. 132, ISBN 1-4303-0782-Х
Внешние ссылки [ править ]
- Официальный сайт
- Домашняя страница Groovy
- Учебник для начинающих - серия учебных пособий по изучению фреймворка Grails.
- Освоение Grails Интерактивное руководство из 18 частей, предоставленное IBM (с 2008 г.)
- Консультации и поддержка Grails
- Курсы обучения Grails - проводят члены команды OCI Grails.
- Grails Slack Channel - ресурс для технической поддержки и обмена идеями
- Новости и события Grails