Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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
  • Сравнение веб-фреймворков

Ссылки [ править ]

  1. ^ "Выпуск 4.0.9" . 11 марта 2021 . Проверено 13 марта 2021 года .
  2. ^ Удаление имени Groovy на Rails
  3. ^ 7.3 Библиотеки тегов
  4. ^ "Документация Grails" .
  5. ^ «Презентация Slideshare» .
  • Браун, Джефф; Роше, Грэм (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