Jump to content

Грааль (фреймворк)

Грааль
Разработчик(и) Грэм Роше
Первоначальный выпуск Октябрь 2005 г.
Стабильная версия
6.1.2 / 31 января 2024 г.
Репозиторий Репозиторий Грааля
Написано в классный
Операционная система Кросс-платформенный
Платформа Кроссплатформенность ( JVM )
Тип Фреймворк веб-приложений
Лицензия Лицензия Апач 2.0
Веб-сайт Грааль .org

Grails — это с открытым исходным кодом платформа веб-приложений , использующая Apache Groovy. [1] : 757, §18  язык программирования (который, в свою очередь, основан на платформе 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() {
        [ books: Book.list() ]
    }
}

Вышеуказанный контроллер имеет list действие, которое возвращает модель , содержащую все книги в базе данных. Чтобы создать этот контроллер, grails используется команда, как показано ниже:

grails create-controller Book

Эта команда создает класс в grails-app/controller каталог проекта Grails. Создание класса контроллера достаточно, чтобы Grails распознал его. list карты действий для http://localhost:8080/book/list в режиме разработки.

Просмотры

[ редактировать ]

Grails поддерживает JSP и GSP. В приведенном ниже примере показано представление, написанное на GSP, в котором перечислены книги в модели, подготовленной контроллером выше:

<html>
  <head>
    <title>Our books</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 проекта Граальс. Это местоположение соответствует BookController и list действие. Размещение файла в этом месте достаточно, чтобы Grails распознал его.

Также доступна ссылка на тег GSP .

Библиотеки динамических тегов

[ редактировать ]

Grails предоставляет большое количество библиотек тегов «из коробки». [1] : 758-763, §18-2  Однако вы также можете создавать и повторно использовать свои собственные библиотеки тегов. [1] : 792, §18-13  легко: [3]

class ApplicationTagLib {
    def formatDate = { attrs, body ->
        out << new java.text.SimpleDateFormat(attrs.format).format(attrs.date)
    }
}

The formatDate библиотека тегов выше форматирует a 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] Архивировано 17 октября 2010 г. в Wayback Machine.

Упорство

[ редактировать ]

Модель предметной области в Grails сохраняется в базе данных с помощью GORM (реляционное сопоставление объектов Grails). Классы предметной области сохраняются в папке grails-app/domain каталог и может быть создан с помощью grails команда, как показано ниже:

grails create-domain-class Book

Эта команда запрашивает имя класса домена и создает соответствующий файл. Ниже приведен код Book класс показан:

class Book {
    String title
    Person author
}

Создание этого класса — это все, что требуется для постоянного управления им с помощью Grails. В Grails 0.3 GORM был улучшен и, например, добавляет идентификатор свойства и саму версию в класс домена, если они отсутствуют. Свойство id используется в качестве первичного ключа соответствующей таблицы. Свойство версии используется для оптимистической блокировки.

Когда класс определяется как доменный класс, то есть управляемый GORM, методы динамически добавляются, чтобы помочь сохранить экземпляры класса. [2] Архивировано 19 октября 2010 г. в Wayback Machine.

Динамические методы экземпляра

[ редактировать ]

The save() метод сохраняет объект в базу данных:

def book = new Book(title:"The Da Vinci Code", author:Author.findByName("Dan Brown"))
book.save()

The delete() метод удаляет объект из базы данных:

def book = Book.findByTitle("The Da Vinci Code")
book.delete()

The refresh() метод обновляет состояние объекта из базы данных:

def book = Book.findByTitle("The Da Vinci Code")
book.refresh()

The ident() метод извлекает идентификатор объекта, присвоенный из базы данных:

def book = Book.findByTitle("The Da Vinci Code")
def id = book.ident()

Динамические статические (классовые) методы

[ редактировать ]

The count() метод возвращает количество записей в базе данных для данного класса:

def bookCount = Book.count()

The exists() метод возвращает true, если в базе данных существует объект с заданным идентификатором:

def bookExists = Book.exists(1)

The find() метод возвращает первый объект из базы данных на основе оператора запроса объекта:

def book = Book.find("from Book b where b.title = ?", [ 'The Da Vinci Code' ])

Обратите внимание, что синтаксис запроса — Hibernate HQL .

The findAll() метод возвращает все объекты, существующие в базе данных:

def books = Book.findAll()

The findAll() метод также может принимать оператор запроса объекта для возврата списка объектов:

def books = Book.findAll("from Book")

The findBy*() методы возвращают первый объект из базы данных, соответствующий определенному шаблону:

def book = Book.findByTitle("The Da Vinci Code")

Также:

def book = Book.findByTitleLike("%Da Vinci%")

The findAllBy*() методы возвращают список объектов из базы данных, соответствующих определенному шаблону:

def books = Book.findAllByTitleLike("The%")

The findWhere*() методы возвращают первый объект из базы данных, соответствующий набору именованных параметров:

def book = Book.findWhere(title:"The Da Vinci Code")

Строительные леса

[ редактировать ]

Grails поддерживает формирование шаблонов для поддержки CRUD операций (создание, чтение, обновление, удаление). Любой доменный класс может быть сформирован путем создания контроллера формирования каркаса, как показано ниже:

class BookController {
    static scaffold = true
}

Создав этот класс, вы можете выполнять операции CRUD на http://localhost:8080/book. Это работает, поскольку BookController следует тому же соглашению об именах, что и доменный класс Book. Чтобы создать шаблон для определенного доменного класса, мы могли бы ссылаться на этот класс непосредственно в свойстве scaffold:

class SomeController {
    static scaffold = Book
}

В настоящее время Grails не предоставляет основу для ассоциаций.

Устаревшие модели баз данных

[ редактировать ]

Механизм сохранения в GORM реализован через Hibernate . Таким образом, устаревшие базы данных могут быть сопоставлены с классами GORM с использованием стандартных файлов сопоставления Hibernate .

Целевая аудитория

[ редактировать ]

Целевая аудитория Grails:

  • Разработчики Java или Groovy, которым нужна интегрированная среда разработки для создания веб-приложений.
  • Разработчики без опыта работы с Java, которым нужна высокопроизводительная среда для создания веб-приложений. [ нужна ссылка ]

Интеграция с платформой Java

[ редактировать ]

Grails построен на основе платформы Java и является ее частью, что означает, что его очень легко интегрировать с библиотеками, платформами и существующими базами кода Java. Grails предлагает прозрачную интеграцию классов, отображаемых с помощью инфраструктуры Hibernate ORM . Это означает, что существующие приложения, использующие Hibernate, могут использовать Grails без перекомпиляции кода или перенастройки классов Hibernate при использовании методов динамического сохранения, описанных выше. [3] Архивировано 16 июля 2011 г. в Wayback Machine.

Одним из последствий этого является то, что формирование шаблонов можно настроить для классов Java, отображаемых с помощью Hibernate. Другим следствием является то, что возможности веб-платформы Grails полностью доступны для этих классов и приложений, которые их используют.

Grails также использует Spring Inversion of Control Framework; На самом деле Grails — это приложение Spring MVC. [4] Фреймворк Spring можно использовать для предоставления дополнительных bean-компонентов Spring и введения их в контекст приложения. Платформа SiteMesh используется для управления уровнем представления, упрощая разработку страниц с помощью надежной системы шаблонов. [5]

Приложения Grails упаковываются как военные артефакты, которые можно развернуть в любом контейнере сервлетов или на серверах приложений Java EE . [1] : 763, §18-2 

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д Deinum et al. 2014Дейнум и др. 2014
  2. ^ Роше, Грэм. «Groovy on Rails больше нет (вроде как)» . Архивировано из оригинала 7 мая 2010 года.
  3. ^ 7.3 Библиотеки тегов
  4. ^ «Документация Грааля» .
  5. ^ «Слайд-презентация» . 6 ноября 2010 г.
[ редактировать ]
  • Роше, Грэм Кейт (2009). Полное руководство по Grails (2-е изд.). Беркли, Калифорния: Apress. ISBN  9781590599952 .
  • Браун, Джефф; Роше, Грэм (2013). Полное руководство по Grails 2 . [Нью-Йорк]: Апресс. ISBN  9781430243779 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6dca82d08880af042cf51c71bbc74eec__1718569140
URL1:https://arc.ask3.ru/arc/aa/6d/ec/6dca82d08880af042cf51c71bbc74eec.html
Заголовок, (Title) документа по адресу, URL1:
Grails (framework) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)