Enviar búsqueda
Cargar
Grails Framework Introduction
•
Descargar como PPTX, PDF
•
9 recomendaciones
•
4,918 vistas
Título mejorado por IA
PT.JUG
Seguir
Apresentação de Miguel Ping - 5º encontro PT.JUG.
Leer menos
Leer más
Tecnología
Vista de diapositivas
Denunciar
Compartir
Vista de diapositivas
Denunciar
Compartir
1 de 27
Descargar ahora
Recomendados
Grails object relational mapping: GORM
Grails object relational mapping: GORM
Saurabh Dixit
Introduction to Grails
Introduction to Grails
NexThoughts Technologies
Broadleaf Presents Thymeleaf
Broadleaf Presents Thymeleaf
Broadleaf Commerce
Grails Simple Login
Grails Simple Login
moniguna
Gradle Introduction
Gradle Introduction
Dmitry Buzdin
Grails Connecting to MySQL
Grails Connecting to MySQL
ashishkirpan
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
David Gómez García
Grails and Ajax
Grails and Ajax
TO THE NEW | Technology
Recomendados
Grails object relational mapping: GORM
Grails object relational mapping: GORM
Saurabh Dixit
Introduction to Grails
Introduction to Grails
NexThoughts Technologies
Broadleaf Presents Thymeleaf
Broadleaf Presents Thymeleaf
Broadleaf Commerce
Grails Simple Login
Grails Simple Login
moniguna
Gradle Introduction
Gradle Introduction
Dmitry Buzdin
Grails Connecting to MySQL
Grails Connecting to MySQL
ashishkirpan
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
David Gómez García
Grails and Ajax
Grails and Ajax
TO THE NEW | Technology
Express JS
Express JS
Alok Guha
Spring Boot
Spring Boot
Pei-Tang Huang
Introduction to RxJS
Introduction to RxJS
Brainhub
Upload files with grails
Upload files with grails
Eric Berry
Hibernate
Hibernate
Prashant Kalkar
Sequence and Traverse - Part 1
Sequence and Traverse - Part 1
Philip Schwarz
Spring Boot
Spring Boot
Jiayun Zhou
PostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized World
Jignesh Shah
Angular Directives
Angular Directives
iFour Technolab Pvt. Ltd.
Java 17
Java 17
Mutlu Okuducu
Concurrency in Java
Concurrency in Java
Allan Huang
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
José Paumard
Html5
Html5
Tony Nguyen
Angular Advanced Routing
Angular Advanced Routing
Laurent Duveau
The Future of Java: Records, Sealed Classes and Pattern Matching
The Future of Java: Records, Sealed Classes and Pattern Matching
José Paumard
Introduction to Kotlin coroutines
Introduction to Kotlin coroutines
Roman Elizarov
Hotwire: How To Build Reactive Rails Applications Without Javascript
Hotwire: How To Build Reactive Rails Applications Without Javascript
Mix & Go
Data Science. Intro
Data Science. Intro
Seongyun Byeon
An intro to GraphQL
An intro to GraphQL
valuebound
Introduction to Redux
Introduction to Redux
Ignacio Martín
Agile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with Netbeans
Carol McDonald
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
Guillaume Laforge
Más contenido relacionado
La actualidad más candente
Express JS
Express JS
Alok Guha
Spring Boot
Spring Boot
Pei-Tang Huang
Introduction to RxJS
Introduction to RxJS
Brainhub
Upload files with grails
Upload files with grails
Eric Berry
Hibernate
Hibernate
Prashant Kalkar
Sequence and Traverse - Part 1
Sequence and Traverse - Part 1
Philip Schwarz
Spring Boot
Spring Boot
Jiayun Zhou
PostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized World
Jignesh Shah
Angular Directives
Angular Directives
iFour Technolab Pvt. Ltd.
Java 17
Java 17
Mutlu Okuducu
Concurrency in Java
Concurrency in Java
Allan Huang
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
José Paumard
Html5
Html5
Tony Nguyen
Angular Advanced Routing
Angular Advanced Routing
Laurent Duveau
The Future of Java: Records, Sealed Classes and Pattern Matching
The Future of Java: Records, Sealed Classes and Pattern Matching
José Paumard
Introduction to Kotlin coroutines
Introduction to Kotlin coroutines
Roman Elizarov
Hotwire: How To Build Reactive Rails Applications Without Javascript
Hotwire: How To Build Reactive Rails Applications Without Javascript
Mix & Go
Data Science. Intro
Data Science. Intro
Seongyun Byeon
An intro to GraphQL
An intro to GraphQL
valuebound
Introduction to Redux
Introduction to Redux
Ignacio Martín
La actualidad más candente
(20)
Express JS
Express JS
Spring Boot
Spring Boot
Introduction to RxJS
Introduction to RxJS
Upload files with grails
Upload files with grails
Hibernate
Hibernate
Sequence and Traverse - Part 1
Sequence and Traverse - Part 1
Spring Boot
Spring Boot
PostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized World
Angular Directives
Angular Directives
Java 17
Java 17
Concurrency in Java
Concurrency in Java
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
Html5
Html5
Angular Advanced Routing
Angular Advanced Routing
The Future of Java: Records, Sealed Classes and Pattern Matching
The Future of Java: Records, Sealed Classes and Pattern Matching
Introduction to Kotlin coroutines
Introduction to Kotlin coroutines
Hotwire: How To Build Reactive Rails Applications Without Javascript
Hotwire: How To Build Reactive Rails Applications Without Javascript
Data Science. Intro
Data Science. Intro
An intro to GraphQL
An intro to GraphQL
Introduction to Redux
Introduction to Redux
Similar a Grails Framework Introduction
Agile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with Netbeans
Carol McDonald
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
Guillaume Laforge
Grails 0.3-SNAPSHOT Presentation WJAX 2006 English
Grails 0.3-SNAPSHOT Presentation WJAX 2006 English
Sven Haiges
Introduction To Groovy 2005
Introduction To Groovy 2005
Tugdual Grall
Grails custom tag lib
Grails custom tag lib
Vijay Shukla
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
ipolevoy
SVCC Intro to Grails
SVCC Intro to Grails
James Williams
GWT Extreme!
GWT Extreme!
cromwellian
JavaOne TS-5098 Groovy SwingBuilder
JavaOne TS-5098 Groovy SwingBuilder
Andres Almiray
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
marpierc
Groovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web Applications
rohitnayak
Grails Custom Tag lib
Grails Custom Tag lib
Ali Tanwir
Grails custom tag lib
Grails custom tag lib
NexThoughts Technologies
Grooscript gr8conf
Grooscript gr8conf
GR8Conf
Scripting Oracle Develop 2007
Scripting Oracle Develop 2007
Tugdual Grall
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
Tsuyoshi Yamamoto
Grails Plugin
Grails Plugin
guligala
Overview of GraphQL & Clients
Overview of GraphQL & Clients
Pokai Chang
The Django Web Application Framework 2
The Django Web Application Framework 2
fishwarter
The Django Web Application Framework 2
The Django Web Application Framework 2
fishwarter
Similar a Grails Framework Introduction
(20)
Agile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with Netbeans
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
Grails 0.3-SNAPSHOT Presentation WJAX 2006 English
Grails 0.3-SNAPSHOT Presentation WJAX 2006 English
Introduction To Groovy 2005
Introduction To Groovy 2005
Grails custom tag lib
Grails custom tag lib
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
SVCC Intro to Grails
SVCC Intro to Grails
GWT Extreme!
GWT Extreme!
JavaOne TS-5098 Groovy SwingBuilder
JavaOne TS-5098 Groovy SwingBuilder
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
Groovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web Applications
Grails Custom Tag lib
Grails Custom Tag lib
Grails custom tag lib
Grails custom tag lib
Grooscript gr8conf
Grooscript gr8conf
Scripting Oracle Develop 2007
Scripting Oracle Develop 2007
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
Grails Plugin
Grails Plugin
Overview of GraphQL & Clients
Overview of GraphQL & Clients
The Django Web Application Framework 2
The Django Web Application Framework 2
The Django Web Application Framework 2
The Django Web Application Framework 2
Más de PT.JUG
Overview of Eclipse technologies
Overview of Eclipse technologies
PT.JUG
Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RS
PT.JUG
Microservices
Microservices
PT.JUG
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
PT.JUG
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps Java
PT.JUG
What's Coming in Java EE 8
What's Coming in Java EE 8
PT.JUG
An Introduction to Play 2 Framework
An Introduction to Play 2 Framework
PT.JUG
MySQL
MySQL
PT.JUG
Introducing Java 8
Introducing Java 8
PT.JUG
JMockit & Hamcrest
JMockit & Hamcrest
PT.JUG
Apache Camel
Apache Camel
PT.JUG
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
PT.JUG
Introducing Infinispan
Introducing Infinispan
PT.JUG
To SOA or not to SOA
To SOA or not to SOA
PT.JUG
Apresentação LifeRay
Apresentação LifeRay
PT.JUG
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3
PT.JUG
Scripting na JVM
Scripting na JVM
PT.JUG
The tale of the Fénix architecture
The tale of the Fénix architecture
PT.JUG
Lightweight Grids With Terracotta
Lightweight Grids With Terracotta
PT.JUG
Google Web Toolkit
Google Web Toolkit
PT.JUG
Más de PT.JUG
(20)
Overview of Eclipse technologies
Overview of Eclipse technologies
Putting Hypermedia Back in REST with JAX-RS
Putting Hypermedia Back in REST with JAX-RS
Microservices
Microservices
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps Java
What's Coming in Java EE 8
What's Coming in Java EE 8
An Introduction to Play 2 Framework
An Introduction to Play 2 Framework
MySQL
MySQL
Introducing Java 8
Introducing Java 8
JMockit & Hamcrest
JMockit & Hamcrest
Apache Camel
Apache Camel
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Introducing Infinispan
Introducing Infinispan
To SOA or not to SOA
To SOA or not to SOA
Apresentação LifeRay
Apresentação LifeRay
Oracle Java Strategy Lg V3
Oracle Java Strategy Lg V3
Scripting na JVM
Scripting na JVM
The tale of the Fénix architecture
The tale of the Fénix architecture
Lightweight Grids With Terracotta
Lightweight Grids With Terracotta
Google Web Toolkit
Google Web Toolkit
Último
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
OnBoard
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Pooja Nehwal
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
naman860154
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Paola De la Torre
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
ThousandEyes
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
2toLead Limited
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Allon Mureinik
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
HostedbyConfluent
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
BookNet Canada
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
Sujit Pal
Último
(20)
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
Grails Framework Introduction
1.
Miguel Ping Introduction
to Grails Framework 18/03/2010
2.
3.
Grails
4.
Grails = Groovy
on (G)Rails
5.
Grails is MVC
6.
Powered by Spring
and Hibernate
7.
Model/Domain Layer
8.
View Layer
9.
Controllers
10.
DemoAgenda
11.
Groovy + =
12.
Java Class publicclassHelloWorld
{privateString name;publicvoidsetName(String name) {this.name = name; }publicStringgetName() {return name; }publicStringgreet() {return"Hello "+ name; }publicstaticvoidmain(String[] args) {HelloWorldhelloWorld=newHelloWorld();helloWorld.setName("Groovy");System.out.println(helloWorld.greet()); }}
13.
Groovy Class publicclassHelloWorld
{privateString name;publicvoidsetName(String name) {this.name = name; }publicStringgetName() {return name; }publicStringgreet() {return"Hello "+ name; }publicstaticvoidmain(String[] args) {HelloWorldhelloWorld=newHelloWorld();helloWorld.setName("Groovy");System.out.println(helloWorld.greet()); }}
14.
15.
Public unless defined
otherwise
16.
Getters and Setters
by default
17.
String interpolation
18.
Semicolons are optional
19.
Type declarations are
optional
20.
Return keyword is
optionalGroovy Features class HelloWorld {def namedefgreet() { "Hello ${name}" }}helloWorld =newHelloWorld(name: "Groovy")println helloWorld.greet()
21.
22.
Dynamically typed (types
are “optional”)
23.
Closures
24.
Anonymous Inner Classes
(recently)
25.
Meta Object Protocol
26.
Hence, MetaClasses and
all the magic
27.
Compiles down to
bytecode
28.
Excellent Java Interop
(Groovy can call Java and vice-versa)
29.
Lots of synthatic
sugar
30.
person?.address
31.
def a =
b ?:cGroovy Definition
32.
Grails + =
33.
34.
SpringSource founded in
2004
35.
G2One (The Groovy
Grails Company) founded in 2007 by the Groovy and Grails project leads
36.
November 2008: G2One
was acquired by SpringSource
37.
August 2009: SpringSource
was acquired by VMware for $420m
38.
SpringSource is now
a division of VMware Overview
39.
40.
Heavily inspired on
Rails framework
41.
But takes advantage
of Java technology like Spring and servlets
42.
It means good
Java (platform) integration
43.
Produces .war artifacts
deployable in any servlet container
44.
Has some command-line
scripts to ease the pain
45.
> grails generate-all
MyClass
46.
> grails test-app
-integration
47.
Has a plugin
architecture
48.
> grails install-plugin
jqueryOverview
49.
Grails is a
Full Stack Groovy Grails Sitemesh Plugins Hibernate Other Libraries Spring Java Virtual Machine / JDK
50.
51.
confConfiguration sources
52.
controlllersController layer
53.
domainModel layer
54.
i18nInternationalized Resource Bundles
55.
servicesService layer
56.
taglibDynamic Tag Libraries
57.
viewsGroovy Server Pages
(GSP)
58.
web-appStylesheets, Javascript, etc
59.
scriptsCustom command-line scripts
60.
srcOther project sources
61.
groovyOther Groovy project
sources
62.
javaOther Java project
sources
63.
lib3th Party Libraries
64.
65.
Plus a DSL
for domain constraints
66.
Constraints/Validations
67.
relationships
68.
belongsTo, hasMany, mappedBy
69.
max, min, blank,
nullable, ... , custom
70.
Implies validation
71.
hasErrors(), validate()
72.
DB operations
73.
CRUD: save(), delete(),
...
74.
Dynamic Finders
75.
FindAllBy<Field> - Magick!!!Models
76.
77.
Taglib
78.
Pagination, i18n, ajax,
page navigation
79.
Hyperlinks
80.
81.
Action is the
closure name
82.
Params are available
in the controller’s closure
83.
etc (including custom
taglibs)
84.
Partial render/Templates
85.
Reusable, allows composition
86.
g:render
87.
LayoutsViews - GSPs
88.
89.
90.
91.
92.
Grails is action-first,
it means the controller runs before the view
93.
Spring-managed beans
94.
Can hook up
with another beans through Spring DI
95.
96.
redirect,
97.
return [beanName: bean]returns
some data to the view Controllers
98.
99.
100.
Spring Security /
Acegi
101.
RIA/AJAX: RichUI &
GrailsUI
102.
Testing (eg: Canoo,
EasyB, etc)
103.
Debugging plugins (eg:
simple dashboard)
104.
Optimization plugins (eg:
js minifier)
105.
Deployment plugins (eg:
google-app-engine, amazon)
106.
Other
107.
Multi-tenant
108.
Paypal
109.
Openid
110.
SpringWS
111.
GWTPlugins
112.
2 classes Constraints
Relations Scaffolding Dynamic Finders View Some GSP navigation Controllers CRUD AJAX Test Drive
113.
Questions
114.
115.
grails create-controller [controller
name]
116.
grails create-domain-class [class
name]
117.
grails create-service [service
name]
118.
grails create-unit-test [test
name]
119.
grails create-tag-lib [taglib
name]
120.
grails generate-all [class
name]
121.
grails generate-views [class
name]Command line scripts - development
122.
123.
grails compile
124.
grails console
125.
grails doc
126.
grails install-plugin
127.
grails run-app
128.
grails warCommand line
scripts - lifecycle
129.
130.
Database connections
131.
conf/UrlMapping.groovy
132.
Routing
133.
conf/BootStrap.groovy
134.
Bootstrap file
135.
conf/Config.groovy
136.
Configurations (MIME mappings,
more…)Important Files
137.
138.
LessThanEquals
139.
GreaterThan
140.
GreaterThanEquals
141.
Between
142.
Like
143.
Ilike (i.e. ignorecase like)
144.
IsNotNull
145.
IsNull
146.
Not
147.
Equal
148.
NotEqual
149.
And
150.
OrDynamic Finders
Notas del editor
Similarities to Jboss SeamWe can see by this slide the commands syntax
Some constraints are mapped to DB constraints, although when removing a constraint grails do not remove the correspondent db constraint.
Intro to taglib, grails style. Mapping to closure. Almost no need for code in gsp.
Explain that Grails is Action-First
Talk about maturity
Faltou falar de: Ambientes, Testes, Scripts, GORM criteria, DSL para beans spring, Plugin Migrações
Configuration Files
Descargar ahora