SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
La importancia de un buen título en presentaciones
Use Groovy & Grails in your Spring Boot
projects,
don't be afraid!
@fatimacasau
La importancia de un buen título en presentaciones
Fátima Casaú Pérez
Software Engineer for over 7 years ago
Java Architect & Scrum Master in Paradigma Tecnológico
Specialized in Groovy & Grails environments
Recently, Spring Boot world
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
@fatimacasau
La importancia de un buen título en presentaciones
What is Spring Boot?
What is Groovy?
Where could you use Groovy in your Spring Boot Projects?
●
Gradle
●
Tests
●
Groovy Templates
●
Anywhere?
●
GORM
●
GSP’s
Overview
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Spring Boot
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Standalone
Auto-configuration - CoC
No XML
Embedded Container and Database
Bootstrapping
Groovy!!
Run quickly - Spring Boot CLI
projects.spring.io/spring-boot
Spring Boot
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Spring Boot application
in a single tweet
DEMO...
La importancia de un buen título en presentaciones
GVM
gvmtool.net
> gvm install springboot
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
HelloWorld.groovy
1  @Controller
2  class ThisWillActuallyRun {
3     @RequestMapping("/")
4     @ResponseBody
5     String home() {
6         "Hello World!"
7     }
8  }
Spring Boot in a single Tweet
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
apply plugin: 'spring­boot'
dependencies {
    compile("org.springframework.boot:spring­boot­starter­web")
 … 
}
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples
La importancia de un buen título en presentaciones
Groovy
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Dynamic language
Optionally typed
@TypeChecked & @CompileStatic
Java Platform
Easy & expressive syntax
Powerful features
closures, DSL, meta-programming, functional programming, scripting, ...
Groovy
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
apply plugin: 'groovy'
dependencies {
    compile("org.codehaus.groovy:groovy­all:2.2.0")
 … 
}
La importancia de un buen título en presentaciones
Where could you use
Groovy?
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Gradle
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Powerful build tool
Support multi-project
Dependency management (based on Apache Ivy)
Support and Integration with Maven & Ivy repositories
Based on Groovy DSL
Build by convention
Ant tasks
Gradle
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Building a Spring Boot
application with Gradle
DEMO...
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
GVM
> gvm install gradle
> gradle build
> gradle tasks
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
build.gradle
1  buildscript {
2     repositories {
3         mavenCentral()
4     }
5     dependencies {
6         classpath("org.springframework.boot:spring­boot­gradle­plugin:1.2.2.RELEASE")
7     }
8  }
9  
10  apply plugin: 'groovy'
11  apply plugin: 'idea'
12  apply plugin: 'spring­boot'
13  
14  jar {
15      baseName = 'helloworld'
16      version = '0.1.0'
17  }
18  
19  repositories {
20      mavenCentral()
21  }
22  
23  dependencies {
24      compile("org.springframework.boot:spring­boot­starter­web")
25  }
La importancia de un buen título en presentaciones
Testing with Spock
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Spock framework & specification
Expressive
Groovy DSL’s
Easy to read tests
Well documented
Powerful assertions
Testing with Spock
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Testing with Spock
DEMO...
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
GoogleSpec.groovy
1 void "test Google Maps API where address is ‘Madrid’"(){
2    setup: “Google Maps API Host & Uri” 
3        def rest = new RESTClient("https://maps.googleapis.com")
4        def uri = "/maps/api/geocode/json"
5    when: “Call the API with address = ‘madrid’”
6        def result = rest.get(path: uri, query: [address:'madrid'])
7    then: “HttpStatus is OK, return a list of results and field status = OK”
8        result
9        result.status == HttpStatus.OK.value()
10        !result.data.results.isEmpty()
11        result.data.status == ‘OK’
12        result.data.toString().contains('Madrid')        
13  }
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
GoogleSpec.groovy
1 void "test Google Maps API with different values"(){
2    setup: “Google Maps API Host & Uri”
3      def rest = new RESTClient("https://maps.googleapis.com")
4      def uri = "/maps/api/geocode/json"
5    expect: “result & status when call the REST API”
6      def result = rest.get(path: uri, query: [address:address])
7      resultsIsEmpty == result.data.results.isEmpty()
8      result.data.status == status
9    where: “address takes different values with different results & status”
10      address | resultsIsEmpty | status
11      'Madrid'| false          | 'OK'
12      'abdkji'| true           | 'ZERO_RESULTS'
13      '186730'| false          | 'ZERO_RESULTS' // This fails!
14         
15  }
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
Assertion failed:  
assert      resultsIsEmpty == result.data.results.isEmpty()
        |               |    |      |     |       |
            false           false       |     |       true
                                 |      |     [...]
                                 |      |
                                 |      ...
                                 ...
docs.spockframework
.org
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
dependencies {
    testCompile("org.springframework.boot:spring­boot­starter­test")
    testCompile("org.springframework:spring­test")
    testRuntime("org.spockframework:spock­spring:0.7­groovy­2.0") {
        exclude group: 'org.spockframework', module: 'spock­core'
    }
    testCompile("org.spockframework:spock­core:0.7­groovy­2.0") {
        exclude group: 'org.codehaus.groovy', module: 'groovy­all'
    }
 … 
}
https://github.com/tomaslin/gs-spring-boot-spock
La importancia de un buen título en presentaciones
Groovy templates
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Groovy Template Framework
Based MarkupBuilder
Groovy DSL’s
Render readable views
Replace variables easily
Groovy templates
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Groovy Templates
DEMO...
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
1 ul {
2    people.each { p ­>
3       li(p.name)
4    }
5 }
With the following model
6 def model = [people: [
7                        new Person(name:'Bob'), 
8                        new Person(name:'Alice')
9              ]]
Renders the following
10 <ul><li>Bob</li><li>Alice</li></ul>
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
dependencies {
    compile("org.springframework.boot:spring­boot­starter­groovy­templates")
 … 
}
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-
boot-sample-web-groovy-templates
La importancia de un buen título en presentaciones
Anywhere!
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Anywhere
Mix Java & Groovy easily
More expressive, simple & flexible than Java
Extension of JDK -> GDK
@CompileStatic @TypeChecked
Controllers, Services, Model,...
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Groovy Controller
DEMO...
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
HelloWorld.groovy
 1 
 2 @Controller
 3 class ThisWillActuallyRun {
 4    @RequestMapping("/")
 5    @ResponseBody
 6    String home() {
 7        "Hello World!"
 8    }
 9 }
@groovy.transform.CompileStatic
La importancia de un buen título en presentaciones
GORM
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Automatic mapping for entities
Dynamic finders, criterias, persistence methods, validation,
mappings, constraints…
Expressive and simple code
implicit getters & setters
implicit constructors
implicit primary key
For Hibernate
For MongoDB
GORM: Grails Object Relational Mapping
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
GORM for Hibernate
DEMO...
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
Customer.groovy
1 @Entity
2 public class Customer {
3
4     String firstName;
5     String lastName;
6
7     static constraints = {
8         firstName blank:false
9         lastName blank:false
10     }
11     static mapping = {
12         firstName column: 'first_name'
13         lastName column: 'last_name'
14     }
15 }
La importancia de un buen título en presentaciones
@fatimacasa
uUse Groovy & Grails in your Spring Boot projects, don't be afraid!
1  [[firstName:"Jack", lastName:"Bauer"],
2   [firstName:"Michelle", lastName:"Dessler"]].each {
3       new Customer(it).save()
4  }
5 
6  def customers = Customer.findAll()
7 
8  customers.each {
9     println it
10 }
11 
12 def customer = Customer.get(1L)
13 
14 customers = Customer.findByLastName("Bauer")
15 customers.each {println it}
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
dependencies {
    compile("org.grails:gorm­hibernate4­spring­boot:1.1.0.RELEASE")
    compile("com.h2database:h2")
 … 
}
https://github.com/fatimacasau/spring-boot-talk/blob/spring-boot-groovy-gorm
La importancia de un buen título en presentaciones
GSP's
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Groovy Server Pages is used by Grails
Large list of useful Tag Libraries
Easy to define new Tags
Not only views
Layouts & Templates
Reuse Code
GSP's: Groovy Server Pages
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
GSP's in Spring Boot
DEMO...
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
1 <g:if test="${session.role == 'admin'}">
2    <%­­ show administrative functions ­­%>
3 </g:if>
4 <g:else>
5    <%­­ show basic functions ­­%>
6 </g:else>
___________________________________________________________________
 1  <g:each in="${[1,2,3]}" var="num">
 2     <p>Number ${num}</p>
 3  </g:each>
___________________________________________________________________
1 <g:findAll in="${books}" expr="it.author == 'Stephen King'">
2      <p>Title: ${it.title}</p>
3 </g:findAll>
___________________________________________________________________
1  <g:dateFormat format="dd­MM­yyyy" date="${new Date()}" />
___________________________________________________________________
1  <g:render template="bookTemplate" model="[book: myBook]" />
La importancia de un buen título en presentaciones
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
dependencies {
    compile("org.grails:grails­gsp­spring­boot:1.0.0")
    compile("org.grails:grails­web­gsp:2.5.0")
    compile("org.grails:grails­web­gsp­taglib:2.5.0")
    compile("org.grails:grails­web­jsp:2.5.0")
 … 
}
https://github.com/grails/grails-boot/tree/master/sample-apps/gsp/gsp-example
La importancia de un buen título en presentaciones
Conclusions
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
If you use Groovy…
Less code
More features
Cool Tests
Cool utilities
Why not? Please try to use Groovy!
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
One moment...
La importancia de un buen título en presentaciones
MVC Spring based Apps
Convention Over Configuration
Bootstrapping
Groovy
GORM
GSP’s ...
It's sounds like Grails!
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Why do you not use Grails?
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
Thanks!!
@fatimacasau
La importancia de un buen título en presentaciones
EXAMPLE
http://github.com/fatimacasau/spring-boot-talk
Simple API Rest with Spring Boot, Groovy and GORM
@fatimacasau
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
La importancia de un buen título en presentaciones
We are hiring!
JEE, Python, PHP, MongoDB, Cassandra, Big Data, Scala, NoSQL,
AngularJS, Javascript, iOS, Android, HTML, CSS3… and Commitment,
Ping Pong, Arcade…
SEND US YOUR CV

Contenu connexe

Tendances

Realtime vs Cloud Firestore
Realtime vs Cloud Firestore Realtime vs Cloud Firestore
Realtime vs Cloud Firestore Appinventiv
 
Mucon 2019: OOps I DDD it again and again
Mucon 2019: OOps I DDD it again and againMucon 2019: OOps I DDD it again and again
Mucon 2019: OOps I DDD it again and againOra Egozi-Barzilai
 
DDD와 이벤트소싱
DDD와 이벤트소싱DDD와 이벤트소싱
DDD와 이벤트소싱Suhyeon Jo
 
[11]Android DataBinding : 기초에서 고급까지
[11]Android DataBinding : 기초에서 고급까지[11]Android DataBinding : 기초에서 고급까지
[11]Android DataBinding : 기초에서 고급까지NAVER Engineering
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막Jay Park
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方Fumihiko Shiroyama
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCSteven Smith
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
[부스트캠퍼세미나]김재원_presentation-oop
[부스트캠퍼세미나]김재원_presentation-oop[부스트캠퍼세미나]김재원_presentation-oop
[부스트캠퍼세미나]김재원_presentation-oopCONNECT FOUNDATION
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나종민 김
 
Docker Containers Deep Dive
Docker Containers Deep DiveDocker Containers Deep Dive
Docker Containers Deep DiveWill Kinard
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
Top 40 MVC Interview Questions and Answers | Edureka
Top 40 MVC Interview Questions and Answers | EdurekaTop 40 MVC Interview Questions and Answers | Edureka
Top 40 MVC Interview Questions and Answers | EdurekaEdureka!
 
Micro services vs Monolith Architecture
Micro services vs Monolith ArchitectureMicro services vs Monolith Architecture
Micro services vs Monolith ArchitectureMohamedElGohary71
 
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane Carlos Santana
 
기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017
기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017
기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017Amazon Web Services Korea
 
DDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt StineDDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt StineVMware Tanzu
 

Tendances (20)

Realtime vs Cloud Firestore
Realtime vs Cloud Firestore Realtime vs Cloud Firestore
Realtime vs Cloud Firestore
 
Mucon 2019: OOps I DDD it again and again
Mucon 2019: OOps I DDD it again and againMucon 2019: OOps I DDD it again and again
Mucon 2019: OOps I DDD it again and again
 
DDD와 이벤트소싱
DDD와 이벤트소싱DDD와 이벤트소싱
DDD와 이벤트소싱
 
[11]Android DataBinding : 기초에서 고급까지
[11]Android DataBinding : 기초에서 고급까지[11]Android DataBinding : 기초에서 고급까지
[11]Android DataBinding : 기초에서 고급까지
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVC
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
[부스트캠퍼세미나]김재원_presentation-oop
[부스트캠퍼세미나]김재원_presentation-oop[부스트캠퍼세미나]김재원_presentation-oop
[부스트캠퍼세미나]김재원_presentation-oop
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
Docker Containers Deep Dive
Docker Containers Deep DiveDocker Containers Deep Dive
Docker Containers Deep Dive
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
Top 40 MVC Interview Questions and Answers | Edureka
Top 40 MVC Interview Questions and Answers | EdurekaTop 40 MVC Interview Questions and Answers | Edureka
Top 40 MVC Interview Questions and Answers | Edureka
 
Micro services vs Monolith Architecture
Micro services vs Monolith ArchitectureMicro services vs Monolith Architecture
Micro services vs Monolith Architecture
 
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
 
CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介
CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介
CND(Certified Network Defender:認定ネットワークディフェンダー)のご紹介
 
기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017
기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017
기업 IT 인프라 환경 최적화를 위한 하이브리드 클라우드 적용 방안 - AWS Summit Seoul 2017
 
DDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt StineDDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
 
Was ist Docker?
Was ist Docker?Was ist Docker?
Was ist Docker?
 
Soluciones Dynatrace
Soluciones DynatraceSoluciones Dynatrace
Soluciones Dynatrace
 

En vedette

Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?Fátima Casaú Pérez
 
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3Lari Hotari
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Fátima Casaú Pérez
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsFátima Casaú Pérez
 
t3chfest 2016 - Implementando microservicios, como y por que
t3chfest 2016 - Implementando microservicios, como y por quet3chfest 2016 - Implementando microservicios, como y por que
t3chfest 2016 - Implementando microservicios, como y por queFátima Casaú Pérez
 
Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...Alvaro Sanchez-Mariscal
 
The report of JavaOne2011 about groovy
The report of JavaOne2011 about groovyThe report of JavaOne2011 about groovy
The report of JavaOne2011 about groovyYasuharu Nakano
 
H2O 3 REST API Overview
H2O 3 REST API OverviewH2O 3 REST API Overview
H2O 3 REST API OverviewSri Ambati
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012kennethaliu
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Uehara Junji
 
Rest style web services (google protocol buffers) prasad nirantar
Rest style web services (google protocol buffers)   prasad nirantarRest style web services (google protocol buffers)   prasad nirantar
Rest style web services (google protocol buffers) prasad nirantarIndicThreads
 

En vedette (20)

Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?
 
Spring boot + spock
Spring boot + spockSpring boot + spock
Spring boot + spock
 
Grails Spring Boot
Grails Spring BootGrails Spring Boot
Grails Spring Boot
 
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
 
Introduction To Grails
Introduction To GrailsIntroduction To Grails
Introduction To Grails
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
 
2013 greach
2013 greach2013 greach
2013 greach
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
t3chfest 2016 - Implementando microservicios, como y por que
t3chfest 2016 - Implementando microservicios, como y por quet3chfest 2016 - Implementando microservicios, como y por que
t3chfest 2016 - Implementando microservicios, como y por que
 
Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf E...
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
The report of JavaOne2011 about groovy
The report of JavaOne2011 about groovyThe report of JavaOne2011 about groovy
The report of JavaOne2011 about groovy
 
H2O 3 REST API Overview
H2O 3 REST API OverviewH2O 3 REST API Overview
H2O 3 REST API Overview
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
 
Branch per user story
Branch per user storyBranch per user story
Branch per user story
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3
 
Rest style web services (google protocol buffers) prasad nirantar
Rest style web services (google protocol buffers)   prasad nirantarRest style web services (google protocol buffers)   prasad nirantar
Rest style web services (google protocol buffers) prasad nirantar
 
Testing con spock
Testing con spockTesting con spock
Testing con spock
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Mapa de Historias de Usuario - User Story Map
Mapa de Historias de Usuario - User Story MapMapa de Historias de Usuario - User Story Map
Mapa de Historias de Usuario - User Story Map
 

Similaire à Use groovy & grails in your spring boot projects

Use Groovy&Grails in your spring boot projects
Use Groovy&Grails in your spring boot projectsUse Groovy&Grails in your spring boot projects
Use Groovy&Grails in your spring boot projectsParadigma Digital
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsJames Williams
 
Java to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioJava to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioMauricio (Salaboy) Salatino
 
Spring-batch Groovy y Gradle
Spring-batch Groovy y GradleSpring-batch Groovy y Gradle
Spring-batch Groovy y GradleAntonio Mas
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovyJessie Evangelista
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3gvasya10
 
JVM Web Frameworks Exploration
JVM Web Frameworks ExplorationJVM Web Frameworks Exploration
JVM Web Frameworks ExplorationKevin H.A. Tan
 
SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진VMware Tanzu Korea
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golangSeongJae Park
 
Feelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java WorldFeelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java WorldKen Kousen
 
Take A Gulp at Task Automation
Take A Gulp at Task AutomationTake A Gulp at Task Automation
Take A Gulp at Task AutomationJoel Lord
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleySven Haiges
 
CoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copyCoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copyPatrick Devins
 
Building full-stack Node.js web apps with Visual Studio Code
Building full-stack Node.js web apps with Visual Studio CodeBuilding full-stack Node.js web apps with Visual Studio Code
Building full-stack Node.js web apps with Visual Studio CodeMicrosoft Tech Community
 
Play Framework on Google App Engine
Play Framework on Google App EnginePlay Framework on Google App Engine
Play Framework on Google App EngineFred Lin
 
Curious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonCurious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonHamed Hatami
 

Similaire à Use groovy & grails in your spring boot projects (20)

Use Groovy&Grails in your spring boot projects
Use Groovy&Grails in your spring boot projectsUse Groovy&Grails in your spring boot projects
Use Groovy&Grails in your spring boot projects
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
 
Java to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioJava to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.io
 
Spring-batch Groovy y Gradle
Spring-batch Groovy y GradleSpring-batch Groovy y Gradle
Spring-batch Groovy y Gradle
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
 
Groovy and noteworthy
Groovy and noteworthyGroovy and noteworthy
Groovy and noteworthy
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
 
JVM Web Frameworks Exploration
JVM Web Frameworks ExplorationJVM Web Frameworks Exploration
JVM Web Frameworks Exploration
 
Capistrano for non-rubyist
Capistrano for non-rubyistCapistrano for non-rubyist
Capistrano for non-rubyist
 
SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
 
Feelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java WorldFeelin' Groovy: A Groovy Developer in the Java World
Feelin' Groovy: A Groovy Developer in the Java World
 
Take A Gulp at Task Automation
Take A Gulp at Task AutomationTake A Gulp at Task Automation
Take A Gulp at Task Automation
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon Valley
 
CoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copyCoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copy
 
Building full-stack Node.js web apps with Visual Studio Code
Building full-stack Node.js web apps with Visual Studio CodeBuilding full-stack Node.js web apps with Visual Studio Code
Building full-stack Node.js web apps with Visual Studio Code
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Play Framework on Google App Engine
Play Framework on Google App EnginePlay Framework on Google App Engine
Play Framework on Google App Engine
 
Curious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonCurious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks Comparison
 

Dernier

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Dernier (20)

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Use groovy & grails in your spring boot projects

  • 1. La importancia de un buen título en presentaciones Use Groovy & Grails in your Spring Boot projects, don't be afraid! @fatimacasau
  • 2. La importancia de un buen título en presentaciones Fátima Casaú Pérez Software Engineer for over 7 years ago Java Architect & Scrum Master in Paradigma Tecnológico Specialized in Groovy & Grails environments Recently, Spring Boot world @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! @fatimacasau
  • 3. La importancia de un buen título en presentaciones What is Spring Boot? What is Groovy? Where could you use Groovy in your Spring Boot Projects? ● Gradle ● Tests ● Groovy Templates ● Anywhere? ● GORM ● GSP’s Overview @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 4. La importancia de un buen título en presentaciones Spring Boot Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 5. La importancia de un buen título en presentaciones Standalone Auto-configuration - CoC No XML Embedded Container and Database Bootstrapping Groovy!! Run quickly - Spring Boot CLI projects.spring.io/spring-boot Spring Boot @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 6. La importancia de un buen título en presentaciones Spring Boot application in a single tweet DEMO...
  • 7. La importancia de un buen título en presentaciones GVM gvmtool.net > gvm install springboot @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 8. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! HelloWorld.groovy 1  @Controller 2  class ThisWillActuallyRun { 3     @RequestMapping("/") 4     @ResponseBody 5     String home() { 6         "Hello World!" 7     } 8  } Spring Boot in a single Tweet
  • 9. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! apply plugin: 'spring­boot' dependencies {     compile("org.springframework.boot:spring­boot­starter­web")  …  } https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples
  • 10. La importancia de un buen título en presentaciones Groovy Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 11. La importancia de un buen título en presentaciones Dynamic language Optionally typed @TypeChecked & @CompileStatic Java Platform Easy & expressive syntax Powerful features closures, DSL, meta-programming, functional programming, scripting, ... Groovy @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 12. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! apply plugin: 'groovy' dependencies {     compile("org.codehaus.groovy:groovy­all:2.2.0")  …  }
  • 13. La importancia de un buen título en presentaciones Where could you use Groovy? Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 14. La importancia de un buen título en presentaciones Gradle Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 15. La importancia de un buen título en presentaciones Powerful build tool Support multi-project Dependency management (based on Apache Ivy) Support and Integration with Maven & Ivy repositories Based on Groovy DSL Build by convention Ant tasks Gradle @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 16. La importancia de un buen título en presentaciones Building a Spring Boot application with Gradle DEMO...
  • 17. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! GVM > gvm install gradle > gradle build > gradle tasks
  • 18. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! build.gradle 1  buildscript { 2     repositories { 3         mavenCentral() 4     } 5     dependencies { 6         classpath("org.springframework.boot:spring­boot­gradle­plugin:1.2.2.RELEASE") 7     } 8  } 9   10  apply plugin: 'groovy' 11  apply plugin: 'idea' 12  apply plugin: 'spring­boot' 13   14  jar { 15      baseName = 'helloworld' 16      version = '0.1.0' 17  } 18   19  repositories { 20      mavenCentral() 21  } 22   23  dependencies { 24      compile("org.springframework.boot:spring­boot­starter­web") 25  }
  • 19. La importancia de un buen título en presentaciones Testing with Spock Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 20. La importancia de un buen título en presentaciones Spock framework & specification Expressive Groovy DSL’s Easy to read tests Well documented Powerful assertions Testing with Spock @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 21. La importancia de un buen título en presentaciones Testing with Spock DEMO...
  • 22. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! GoogleSpec.groovy 1 void "test Google Maps API where address is ‘Madrid’"(){ 2    setup: “Google Maps API Host & Uri”  3        def rest = new RESTClient("https://maps.googleapis.com") 4        def uri = "/maps/api/geocode/json" 5    when: “Call the API with address = ‘madrid’” 6        def result = rest.get(path: uri, query: [address:'madrid']) 7    then: “HttpStatus is OK, return a list of results and field status = OK” 8        result 9        result.status == HttpStatus.OK.value() 10        !result.data.results.isEmpty() 11        result.data.status == ‘OK’ 12        result.data.toString().contains('Madrid')         13  }
  • 23. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! GoogleSpec.groovy 1 void "test Google Maps API with different values"(){ 2    setup: “Google Maps API Host & Uri” 3      def rest = new RESTClient("https://maps.googleapis.com") 4      def uri = "/maps/api/geocode/json" 5    expect: “result & status when call the REST API” 6      def result = rest.get(path: uri, query: [address:address]) 7      resultsIsEmpty == result.data.results.isEmpty() 8      result.data.status == status 9    where: “address takes different values with different results & status” 10      address | resultsIsEmpty | status 11      'Madrid'| false          | 'OK' 12      'abdkji'| true           | 'ZERO_RESULTS' 13      '186730'| false          | 'ZERO_RESULTS' // This fails! 14          15  }
  • 24. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! Assertion failed:   assert      resultsIsEmpty == result.data.results.isEmpty()         |               |    |      |     |       |             false           false       |     |       true                                  |      |     [...]                                  |      |                                  |      ...                                  ... docs.spockframework .org
  • 25. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! dependencies {     testCompile("org.springframework.boot:spring­boot­starter­test")     testCompile("org.springframework:spring­test")     testRuntime("org.spockframework:spock­spring:0.7­groovy­2.0") {         exclude group: 'org.spockframework', module: 'spock­core'     }     testCompile("org.spockframework:spock­core:0.7­groovy­2.0") {         exclude group: 'org.codehaus.groovy', module: 'groovy­all'     }  …  } https://github.com/tomaslin/gs-spring-boot-spock
  • 26. La importancia de un buen título en presentaciones Groovy templates Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 27. La importancia de un buen título en presentaciones Groovy Template Framework Based MarkupBuilder Groovy DSL’s Render readable views Replace variables easily Groovy templates @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 28. La importancia de un buen título en presentaciones Groovy Templates DEMO...
  • 29. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! 1 ul { 2    people.each { p ­> 3       li(p.name) 4    } 5 } With the following model 6 def model = [people: [ 7                        new Person(name:'Bob'),  8                        new Person(name:'Alice') 9              ]] Renders the following 10 <ul><li>Bob</li><li>Alice</li></ul>
  • 30. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! dependencies {     compile("org.springframework.boot:spring­boot­starter­groovy­templates")  …  } https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring- boot-sample-web-groovy-templates
  • 31. La importancia de un buen título en presentaciones Anywhere! Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 32. La importancia de un buen título en presentaciones Anywhere Mix Java & Groovy easily More expressive, simple & flexible than Java Extension of JDK -> GDK @CompileStatic @TypeChecked Controllers, Services, Model,... @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 33. La importancia de un buen título en presentaciones Groovy Controller DEMO...
  • 34. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! HelloWorld.groovy  1   2 @Controller  3 class ThisWillActuallyRun {  4    @RequestMapping("/")  5    @ResponseBody  6    String home() {  7        "Hello World!"  8    }  9 } @groovy.transform.CompileStatic
  • 35. La importancia de un buen título en presentaciones GORM Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 36. La importancia de un buen título en presentaciones Automatic mapping for entities Dynamic finders, criterias, persistence methods, validation, mappings, constraints… Expressive and simple code implicit getters & setters implicit constructors implicit primary key For Hibernate For MongoDB GORM: Grails Object Relational Mapping @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 37. La importancia de un buen título en presentaciones GORM for Hibernate DEMO...
  • 38. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! Customer.groovy 1 @Entity 2 public class Customer { 3 4     String firstName; 5     String lastName; 6 7     static constraints = { 8         firstName blank:false 9         lastName blank:false 10     } 11     static mapping = { 12         firstName column: 'first_name' 13         lastName column: 'last_name' 14     } 15 }
  • 39. La importancia de un buen título en presentaciones @fatimacasa uUse Groovy & Grails in your Spring Boot projects, don't be afraid! 1  [[firstName:"Jack", lastName:"Bauer"], 2   [firstName:"Michelle", lastName:"Dessler"]].each { 3       new Customer(it).save() 4  } 5  6  def customers = Customer.findAll() 7  8  customers.each { 9     println it 10 } 11  12 def customer = Customer.get(1L) 13  14 customers = Customer.findByLastName("Bauer") 15 customers.each {println it}
  • 40. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! dependencies {     compile("org.grails:gorm­hibernate4­spring­boot:1.1.0.RELEASE")     compile("com.h2database:h2")  …  } https://github.com/fatimacasau/spring-boot-talk/blob/spring-boot-groovy-gorm
  • 41. La importancia de un buen título en presentaciones GSP's Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 42. La importancia de un buen título en presentaciones Groovy Server Pages is used by Grails Large list of useful Tag Libraries Easy to define new Tags Not only views Layouts & Templates Reuse Code GSP's: Groovy Server Pages @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 43. La importancia de un buen título en presentaciones GSP's in Spring Boot DEMO...
  • 44. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! 1 <g:if test="${session.role == 'admin'}"> 2    <%­­ show administrative functions ­­%> 3 </g:if> 4 <g:else> 5    <%­­ show basic functions ­­%> 6 </g:else> ___________________________________________________________________  1  <g:each in="${[1,2,3]}" var="num">  2     <p>Number ${num}</p>  3  </g:each> ___________________________________________________________________ 1 <g:findAll in="${books}" expr="it.author == 'Stephen King'"> 2      <p>Title: ${it.title}</p> 3 </g:findAll> ___________________________________________________________________ 1  <g:dateFormat format="dd­MM­yyyy" date="${new Date()}" /> ___________________________________________________________________ 1  <g:render template="bookTemplate" model="[book: myBook]" />
  • 45. La importancia de un buen título en presentaciones @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid! dependencies {     compile("org.grails:grails­gsp­spring­boot:1.0.0")     compile("org.grails:grails­web­gsp:2.5.0")     compile("org.grails:grails­web­gsp­taglib:2.5.0")     compile("org.grails:grails­web­jsp:2.5.0")  …  } https://github.com/grails/grails-boot/tree/master/sample-apps/gsp/gsp-example
  • 46. La importancia de un buen título en presentaciones Conclusions Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 47. La importancia de un buen título en presentaciones If you use Groovy… Less code More features Cool Tests Cool utilities Why not? Please try to use Groovy! @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 48. La importancia de un buen título en presentaciones One moment...
  • 49. La importancia de un buen título en presentaciones MVC Spring based Apps Convention Over Configuration Bootstrapping Groovy GORM GSP’s ... It's sounds like Grails! @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 50. La importancia de un buen título en presentaciones Why do you not use Grails? Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 51. La importancia de un buen título en presentaciones Thanks!! @fatimacasau
  • 52. La importancia de un buen título en presentaciones EXAMPLE http://github.com/fatimacasau/spring-boot-talk Simple API Rest with Spring Boot, Groovy and GORM @fatimacasau Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  • 53. La importancia de un buen título en presentaciones We are hiring! JEE, Python, PHP, MongoDB, Cassandra, Big Data, Scala, NoSQL, AngularJS, Javascript, iOS, Android, HTML, CSS3… and Commitment, Ping Pong, Arcade… SEND US YOUR CV

Notes de l'éditeur

  1. My name is Fatima Casau I’m a software engineer since seven years ago and currently, I work as a Java Architect and Scrum Master in Paradigma Tecnologico Since 6 years ago, I’m specialized in Groovy &amp; Grails technologies and recently, I&amp;apos;m working with Spring Boot. For this, I&amp;apos;m here and I want to tell you my experience about this
  2. Well... In short, What are we going to see in this talk? I’m going to talk about Spring Boot and Groovy and where you could use Groovy in your spring boot projects We go to see... What is Spring Boot What is Groovy And, how or where use both. For example Using Gradle Developing tests with groovy and the Spock framework Using Groovy Templates Or why not?, Anywhere in your projects Also, We will see how to use GORM and GSP’s in a Spring Boot project, outside Grails
  3. In First Place, What is Spring Boot? Question: How many people know Spring Boot? Question: How many people are using Spring Boot currently? (If many people -&amp;gt; As many of you know...
  4. … Spring Boot is a new project from Spring that allows you to develop standalone Spring MVC applications easily. Probably, You think about the many configurations there are in Spring projects, but, Spring Boot, follows Convention Over Configuration allowing Autoconfiguration and configuration with annotations, eliminating the necessity of use XML configuration files. In other hand, Spring Boot allows you to start and build production applications quickly, because provides an embedded container and database according to the dependencies specified in the build system, so, you don&amp;apos;t need to configure this to start to work. Additionally, we can use Groovy, and, of course, all of its features, only including a dependency. Finally, we can run an application quickly thanks to Spring Boot CLI Tool Of course, you can find examples and documentation about all of this on the Spring Boot website in projects (dot) spring (dot) io (slash) spring-boot
  5. We go to see a little but powerful example: We can develop an application that can be contained in a single tweet and execute it quickly with Spring Boot CLI
  6. First, I want to talk about the GVM Tool GVM is a Tool for managing versions of multiple Software Development Kits To use it, you can download in its website gvmtool.net Once you have downloaded, you can see witch framework are available only typing &amp;apos;gvm&amp;apos; you can download Spring Boot with the GVM Tool Once you have installed GVM tool, only you need to do is execute in a terminal gvm install springboot and this will install the latest version of spring boot
  7. Here we have the example: a groovy script with: an annotation (at) Controller that means this is a Controller component two more annotations, to determine the URI and response of the controller and finally, a method that returns the message “Hello World” To execute this, we open a terminal and go to the path that contains the groovy script and type spring run helloWorld.groovy (By command line) go to workspaces/greach14 spring run helloWorld.groovy Later, go to Chrome and type localhost:8080 and see the result It&amp;apos;s only you need to do to start an example
  8. In second place, The next lead actor in this talk, of course, is Groovy! Question: How many people know Groovy? Question: How many people are using Groovy currently?
  9. What is Groovy? Groovy is a dynamic language, optionally typed with static-typing and static compilation capabilities for the Java platform Thanks to an easy and expressive syntax it’s easy to learn for java developers. Furthermore, it integrates easily with any Java program, delivering powerful features, including closures, runtime and compile-time meta-programming, functional programming, scripting, powerful tests...and so on So..., if we combine the power of Spring Boot with the features of Groovy we obtain a couple of powerful tools that allows to developers work in an easy and more productive, interesting and amazing way
  10. Then.... Where could you introduce Groovy in your spring boot applications? In short, anywhere!, but we go to see the different sites in the project where you could use Groovy bit by bit
  11. The first option is use Groovy in the process to build the project using Gradle
  12. With Spring Boot we can build our projects with Maven, but also, we can use Gradle With Maven, we have to manage a static xml file, the pom.xml file, but with Gradle we have a flexible and modular groovy file that it&amp;apos;s more easy to read thanks to a friendly syntax based on Groovy DSL’s and a plugin model With Gradle, we have a powerful building tool with many features such as support for multi-project, dependency management based on Apache Ivy, with support and integration with Maven and Ivy repositories.. And also, we have a large list of tasks based on Ant to manage our application
  13. See you how to use
  14. Like with Spring Boot, we can download and manage our versions of Gradle with GVM Tool Later, we only need to create a build.gradle file with some dependencies and execute the command gradle build to compile, test and assemble the code into a jar file. If we execute gradle ‘tasks’ we can see a list of available for our project.
  15. This is an example of build.gradle file. We can see some plugins such as groovy, idea or spring boot, of course. Also, we have got the configurations about the jar file, the name and the version of our project Below, the repositories configuration and the dependencies. If you include some plugin more and execute the ‘tasks’ command again, you will can see new tasks in the list, the tasks are related with the dependencies available in the project
  16. Other site where use Groovy is implementing tests using the framework Spock. This is my favorite section I like to implement tests with groovy and Spock framework
  17. Why? Spock is not only a test framework, Spock is a test specification for Groovy and Java projects With an expressive language, its also based on Groovy DSL’s and this makes our tests become easy to read and well documented. Moreover, when an assertion failed, the exit is very intuitive and easy to read as well.
  18. Let me to show some examples of simple spock tests and how to use its test blocks
  19. For example, With Spock we can define test with descriptive signatures. We can organize the code in intuitive blocks such as: “given” or “setup” to setup initial variables, for example, “when” to execute an action and “then” to test the result. In this block we needn’t asserts, only test if a sentence is true or not by the use of groovy truth
  20. In the other hand we have got two blocks more, ‘expect’ and ‘where’. With this blocks we can test different combinations of data in only one test and later, we will see what iterations it has failed and what not easily
  21. Here, we can view the way to show the assertions failed. It’s very easy read the failure In addition to these, we have more features with diferents tags and utilities. Please visit the documentation and test the examples I think that this is a good point to start with Groovy and know the features and the simplicity of the language
  22. Another possibility is the use of Groovy templates
  23. Groovy Template Framework is based on MarkupBuild that permits a pretty and easy way to write readable Groovy Views using Groovy DSL&amp;apos;s Also, provide an easy way to replace variables in the view
  24. See you an example
  25. In this block, we have an ‘ul’ block where a people list is iterated and for each person, its name is printed in a li element. We can pass a list and iterate it in the view easily If we return this view and, in the model, we send this list of people, we obtain the result printed in the line below Right?
  26. Well..., Really, You can use Groovy anywhere in your spring boot project
  27. Yes! Anywhere! We can use Groovy in controllers, services, domain classes… If we need, we can combine Java &amp; Groovy easily, that is, if we need have classes in Java &amp; in other hand, classes in Groovy, it is possible. And, you must to know that the most important features of use groovy over java is that our applications will be very simple, expressive and flexible, will have less code and, if there are less code, there will be less errors. This is a fact! Furthermore, with Groovy we have many features available than with Java, because Groovy provides the GDK as an extension of JDK with many more features about the use of Strings, collections, control structures, closures… and so on. Finally, you could think about compilation in runtime or dynamic typing, but, if you are worry about this, you must to know that you can use Static Compilation or Static Typing with the annotations (at)CompileStatic and (at)TypeChecked in your classes.
  28. Here, I won&amp;apos;t to show anything different, only, the same controller in the beginning of the talk but with the use of CompileStatic annotation
  29. Only, you need to add the annotation (at)CompileStatic in the definition of the class This code should already run as fast as Java.
  30. The use of GORM with Spring Boot GORM is the Grails Object Relational Mapping
  31. Since Grails 2.4, It is possible to use GORM outside of Grails, and this permits access relational database or MongoDB with GORM in a Spring Application including the correct dependency in the project. With GORM we can map the entities automatically, we have dynamic finders, criterias, persistence methods, validations… and more. We don’t need implements getters &amp; setters methods, constructors or specify the primary key. With this features, our code is even simple
  32. See some code...
  33. This is a domain class implemented with Groovy and using GORM. The annotation @Entity indicates that we are using GORM. We can specify some constraints easily, or some mapping options.
  34. Now, see how to use a domain class with GORM. For example. We can instance new object of the class with a map in the constructor and we have not defined this constructor In other hand, We have dynamic finders without implement it, findAll, get, findBy… any attributes… and many more
  35. As GORM, we can use GSP’s (Groovy Server Pages) outside of Grails.
  36. With GSP’s we have a large list of Tag libraries that we can use to make our views more simple. Also, we can create easily our own tags or we can define layouts, templates and reuse the code easily
  37. See some examples of predefined tags:
  38. conditional tags as g:if and g:else iterator tags as g:each or using a finder that iterates a list with a condition g:dateFormat to format dates in view easily g:render to render templates sending a model and many more! Also, remind that you can implements your own tags easily
  39. well… after all of this… What are the conclusions? (Almost my conclusions)
  40. If you use Groovy… as I’ve said before, your application has less lines of code, so, less errors, if there are errors, you can find them easily so, you will be more productive Remind that with Groovy you can get more features for your project, you can implement cool test and you can use cool utilities, this is: you have a super-vitaminized Project! Then, Why not use Groovy in your Spring Boot project? Please, use Groovy! Try to introduce bit to bit in the application. Begin with Spock tests, later, introduce groovy in the code of your services, and so on.
  41. But, one moment...
  42. We have talked about MVC Spring Based Apps Convention Over Configuration Application Bootstrapping Groovy Language GORM GSP’s…. This sounds like Grails! And also, Grails 3.0 is built on Spring Boot!! So, I want to leave you with a question,... Why not use Grails instead of Spring Boot?
  43. The next lead actor in this talk is Groovy! Question: How many people know Groovy? Question: How many people are using Groovy currently?
  44. One more thing. In Paradigma, we are hiring for people specialized in many technologies as you can see, so, if your are interested or you know somebody could be interested, please, send us your CV &amp;lt;number&amp;gt;