Greach es el evento sobre tecnologías basadas en lenguaje Groovy referente en España.
Dentro de este evento, la charla 'Use Groovy & Grails in your Spring Boot projects' se presenta como una propuesta de ejemplos y posibilidades de introducir este lenguaje y algunos módulos del framework Grails (basado también en Groovy) en proyectos implementados con la reciente solución lanzada por Spring llama Spring Boot.
More info:
http://buff.ly/1DXXQWU
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 }
9. La importancia de un buen título en presentaciones
Groovy
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
10. 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!
11. 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!
12. La importancia de un buen título en presentaciones
Gradle
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
13. 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!
14. La importancia de un buen título en presentaciones
Building a Spring Boot
application with Gradle
DEMO...
15. 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
16. 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:springbootgradleplugin:1.2.2.RELEASE")
7 }
8 }
9
10 apply plugin: 'groovy'
11 apply plugin: 'idea'
12 apply plugin: 'springboot'
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:springbootstarterweb")
25 }
17. La importancia de un buen título en presentaciones
Testing with Spock
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
18. 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!
19. La importancia de un buen título en presentaciones
Testing with Spock
DEMO...
20. 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 }
21. 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 }
22. 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
23. La importancia de un buen título en presentaciones
Groovy templates
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
24. 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!
25. La importancia de un buen título en presentaciones
Groovy Templates
DEMO...
26. 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>
27. La importancia de un buen título en presentaciones
Anywhere!
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
28. 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!
29. La importancia de un buen título en presentaciones
Groovy Controller
DEMO...
30. 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
31. La importancia de un buen título en presentaciones
GORM
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
32. 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!
33. La importancia de un buen título en presentaciones
GORM for Hibernate
DEMO...
34. 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 }
35. La importancia de un buen título en presentaciones
@fatimacasau
Use 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}
36. La importancia de un buen título en presentaciones
GSP's
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
37. 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!
38. La importancia de un buen título en presentaciones
GSP's in Spring Boot
DEMO...
39. 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="ddMMyyyy" date="${new Date()}" />
___________________________________________________________________
1 <g:render template="bookTemplate" model="[book: myBook]" />
40. La importancia de un buen título en presentaciones
Conclusions
Use Groovy & Grails in your Spring Boot projects, don't be afraid!
41. 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!
43. 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!
44. 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!
45. La importancia de un buen título en presentaciones
Thanks!!
@fatimacasau
46. 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