grails. Поиски закончены · grails-app conf controllers domain services taglib views...
TRANSCRIPT
![Page 1: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/1.jpg)
Grails. Поиски закончены.
Сергей Нековаль
(Грамант)
![Page 2: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/2.jpg)
![Page 3: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/3.jpg)
Зоопарк Что выбрать?
![Page 4: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/4.jpg)
Жалобы трудящихся
• Сложность освоения
• Отсутствие интегрированного решения
• Длинный цикл разработки
![Page 5: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/5.jpg)
Grails
• Легок в освоении
• Быстрота разработки
• Без изобретения велосипедов!
![Page 6: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/6.jpg)
Умные слова • MVC Model-‐View-‐Controller • DSL Domain-‐Specific Language • DI Dependency Injeceon • DDD Domain Driven Design • ORM Object-‐Relaeonal Mapping • CC Conveneon over configuraeon
![Page 7: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/7.jpg)
Экскурсия в Grails • Язык Groovy • Как разрабатывается веб-‐приложение на Grails
• Тестирование, сборка, развертывание
![Page 8: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/8.jpg)
![Page 9: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/9.jpg)
Groovy
Все, что так хотели Java-программисты,
но боялись попросить
![Page 10: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/10.jpg)
Компилируется…
![Page 11: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/11.jpg)
«Мой код компилируется» ОТМАЗКА #1
отлынивающего от работы программиста
![Page 12: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/12.jpg)
Groovy • Компилируется в байт-‐код • Динамический ОО с необязательной типизацией
• Вызов любого Java-‐кода и наоборот • Поддерживает closures
![Page 13: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/13.jpg)
Groovy за 1 минуту def myClosure = { a,b -‐> a + b } def map = [x:1, y:1], list = [1, 2, 3, 4] assert map.x == map[‘x’] assert [-‐1, 0, 1, 2].find{it > 0} == 1 ‘0123456789’[2..5] == ‘2345’
![Page 14: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/14.jpg)
Groovy за 2 минуты
• Метаклассы: Integer.metaClass.sqr << {-‐> this * this }
• Перегрузка операторов
• GString: “My name is ${name}”
![Page 15: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/15.jpg)
Базовое Grails-‐приложение grails-app
conf controllers domain services taglib views
src groovy java
test web-app
WEB-INF
![Page 16: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/16.jpg)
Среды
• Development • Test • Produceon
![Page 17: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/17.jpg)
Пишем веб-‐приложение • Сущности • Сервисы • Контроллеры • GSP-‐страницы, тэги, фильтры
![Page 18: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/18.jpg)
MVC в Grails
![Page 19: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/19.jpg)
Сущность
• Валидация полей • Основа для схемы БД (hbm2ddl) • Основа для scaffolding
![Page 20: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/20.jpg)
class Book { String etle sta5c constraints = { etle(blank:false, nullable:false, size:5..150) }
}
![Page 21: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/21.jpg)
Scaffolding
• Генерация controller + view • Быстро создать скелет приложения • Что-‐то поправить
![Page 22: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/22.jpg)
GORM (Grails ORM) • Очень мощный фантик для Hibernate 3 • Можно использовать отдельно от Grails • Версионирование (opemisec locking) • Mapping DSL • Criteria DSL, HQL, транзакции и т.д.
![Page 23: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/23.jpg)
Many-‐to-‐one class Book { String etle sta5c belongsTo = [author:Author]
} One-‐to-‐many
sta5c hasMany = [books:Book]
![Page 24: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/24.jpg)
def pushkin = Author.get(1) def onegin = Book.findByTitle(«Евгений Онегин») def onegin = Book.findByAuthorAndTitleLike
(pushkin, «%Онегин%») println «Пушкин написал \ ${Book.countByAuthor(pushkin)} книг.»
![Page 25: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/25.jpg)
Сервисы
• Комплексная бизнес-‐логика • Dependency Injeceon
![Page 26: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/26.jpg)
Тесты
• Unit • Integraeon (Spring)
![Page 27: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/27.jpg)
Сборка
• На выходе – WAR файл • Управление сборкой: Gant • Зависимости: Maven, Ivy
![Page 28: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/28.jpg)
Build DSL grails.project.dependency.resolueon = { dependencies { runeme 'postgresql:postgresql:8.3-‐604.jdbc4‘ }
}
Артефакт Maven
![Page 29: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •](https://reader034.vdocuments.mx/reader034/viewer/2022052014/602bd8ab52fc57739a2faa67/html5/thumbnails/29.jpg)
Причины популярности • Низкий порог входа • Быстрая разработка • Поддержка IDE: NetBeans, IDEA, Eclipse • Стабильность и переносимость платформы • Плагины