Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Use groovy & grails in your spring boot projects

8,782 views

Published on

A presentation about the use of Groovy and Grails in Spring Boot applications presented in Greach Conference

Published in: Software
  • Be the first to comment

Use groovy & grails in your spring boot projects

  1. 1. La importancia de un buen título en presentaciones Use Groovy & Grails in your Spring Boot projects, don't be afraid! @fatimacasau
  2. 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. 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. 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. 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. 6. La importancia de un buen título en presentaciones Spring Boot application in a single tweet DEMO...
  7. 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. 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. 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. 10. La importancia de un buen título en presentaciones Groovy Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  11. 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. 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. 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. 14. La importancia de un buen título en presentaciones Gradle Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  15. 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. 16. La importancia de un buen título en presentaciones Building a Spring Boot application with Gradle DEMO...
  17. 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. 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. 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. 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. 21. La importancia de un buen título en presentaciones Testing with Spock DEMO...
  22. 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. 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. 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. 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. 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. 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. 28. La importancia de un buen título en presentaciones Groovy Templates DEMO...
  29. 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. 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. 31. La importancia de un buen título en presentaciones Anywhere! Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  32. 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. 33. La importancia de un buen título en presentaciones Groovy Controller DEMO...
  34. 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. 35. La importancia de un buen título en presentaciones GORM Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  36. 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. 37. La importancia de un buen título en presentaciones GORM for Hibernate DEMO...
  38. 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. 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. 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. 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. 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. 43. La importancia de un buen título en presentaciones GSP's in Spring Boot DEMO...
  44. 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. 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. 46. La importancia de un buen título en presentaciones Conclusions Use Groovy & Grails in your Spring Boot projects, don't be afraid!
  47. 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. 48. La importancia de un buen título en presentaciones One moment...
  49. 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. 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. 51. La importancia de un buen título en presentaciones Thanks!! @fatimacasau
  52. 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. 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

×