Migración de Proyectos JEE a Grails
@fatimacasau Ingeniero Técnico Informá;co 4 años en Desarrollo de aplicaciones web Scrum master Groovy & Grails
¿Por qué migrar?
Reu;lización de recursos Refactorizar Agilizar
SPRING MVC
SPRING APP
LICA
TION GRAILS APPLICATIO
N
JPA/Hibernate Domain Model
lib
src/java
clases *.java
Hibernate
Generamos el fichero hibernate.cfg.xml Copiamos los archivos *.hbm.xml
hibernate.cfg.xml Añadimos los ficheros *.hbm.xml
JPA Igual que en el caso anterior Clase por clase
Validation
org.springframework .valida3on.Validator
es.package.domain.java es.package .domainConstraint.groovy
src/java
GORM VALIDATION
Constraints
Data Binding Valida;on
Controllers Spring MVC
Controllers & configura3on files
*.xml New Controller
Ac3ons & render views Scopes:
• servletContext -‐ instance of javax.servlet.ServletContext • session -‐ instance of HMpsession • request -‐ instance of HMpServletRequest • params -‐ map of parameters • flash -‐ messages
Controllers
Controllers
Grails controller def vets = { [vets: Vet.list() ] }
Spring MVC controller @RequestMapping("/vets") public ModelMap vetsHandler() { Vets vets = new Vets(); vets.getVetList().addAll(this.clinic.getVets()); return new ModelMap(vets); }
Views
JSP’s
JSP’s GSP’s
New GSP’s
Services
spring services GORM
applica3on-‐context.xml
resources.groov spring annota3ons @service
@autowired …
Services
applica;onContext.xml
resources.groovy
Datasources
Si tenemos más de un datasource, podemos definirlo como un bean en resources.groovy o u;lizar el plugin datasources. En grails 2.0 ya está soportado
datasource.groovy
i18n
i18n*.proper3es messages*-‐.proper3es
Dependency resolution
pom.xml
BuildConfig.groovy
STRUTS EJB’S JSF’S
Otros Framewors
NEW
resources.groovy
MyService.groovy
Comparad!
+ ágil + sencillo + produc;vo
-‐ clases -‐ *.xml -‐ *.proper;es
hdp://petclinic-‐grails.cloudfoundry.com/html/petclinic.html
hdp://sta;c.springsource.org/docs/petclinic.html
+ clases + *.xml + *.proper;es
-‐ ágil + complejo -‐ produc;vo