spring roo jaxitalia09

27
Massimiliano Dessì, Pronetics S.p.A. 1 Spring Roo

Upload: massimiliano-dessi

Post on 05-Dec-2014

4.013 views

Category:

Technology


1 download

DESCRIPTION

Spring ROO JaxItalia 2009 slides

TRANSCRIPT

Page 1: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.A. 1

Spring Roo

Page 2: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 2

Speaker Software Engineer and Architect ProNetics

Founder Spring Italian User Group

Presidente JugSardegna Onlus

Committer/Contributor OpenNMS – MongoDB

Autore Spring 2.5 Aspect Oriented programming

Page 3: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 3

Agenda

Kanga Roo In Action

30 minutes

(10 to build 20 to describe)

less than one SBK manche

in Phillip Island Circuit.

Troy Bayliss

Page 4: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 4

Mission

ROO migliora la produttività dello Sviluppo Java senza nessun compromesso

sulla qualità e flessibilità. Per l’utente finale è un piccolo genio

che lavora in silenzio sulle cose di cui non vorremmo preoccuparci

Page 5: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 5

Demo

10 minuti con Roo valgono più di alcuni giorni di lavoro

Page 6: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 6

Roo Roo is an extensible, text-based RAD tool for Java

Roo is development-time only (no Roo runtime) ____ ____ ____ / __ \/ __ \/ __ \ / /_/ / / / / / / / / _, _/ /_/ / /_/ / /_/ |_|\____/\____/ 1.0.0.RC3 [rev 401] Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER. roo>

Page 7: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 7

Comandi Roo semplifica la creazione di un progetto

assistendo l’utente – hint e help aiutano nei vari passi richiesti

– TAB completamento ovunque

– Comandi contestuali

– In caso di errore ROO permette il rollback.

– Comandi “scriptabili” per poterli riprodurre

– Funzionamento conservativo e predittivo

Page 8: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 8

Stack Roo è costruito su:

Java Spring Framework

Java Persistence API (Hibernate) Java Server Pages

Spring Security Spring Web Flow

Log4J, Maven, AspectJ, Eclipse/STS

Page 9: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 9

Code generation Roo è un generatore di codice ibrido

– utilizza in meglio del modello di generazione passivo e attivo

Generazione passiva – Utilizzo della Roo shell per generare qualcosa

(solitamente files .xml e .java)

Generazione attiva – Costruzione di metadati con le annotazioni @Roo*

– Aggiornamento incrementale di file .aj, .jsp

Page 10: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 10

Out of the Box •  Gestione progetto •  Oggetti generici •  Entity •  Gestione campi •  Persistenza •  JUnit test •  Finder dinamici •  Spring MVC, Spring Web Flow, Selenium •  JMS, SMTP •  Build system integration (Maven) •  Spring Security, Bundlor, Logging

Page 11: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 11

Project management

project

dependency add

dependency remove

backup

Tutte le dipendenze usano Enterprise Bundle Repo

Versionati, OSGi-compatible

Page 12: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 12

Oggetti generici

– @RooJavaBean – getters e setters

– @RooConfigurable – aggiunge @Configurable

– @RooToString

Page 13: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 13

Entity

entity

- @RooEntity

- JPA entity feature-rich

–JPA @Entity con id, version, EntityManager

– Automaticamente aggiunge count, findAll, findById, findEntries, persiste, rimuove

-Comando con molte direttive opzionali

Page 14: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 14

Gestione campi field

Scelta tra i tipi “comuni”

La shell ricorda l’ultima entity su cui si è lavorato

Opzioni per:

– JPA annotations

– JavaBean validation annotations

– Java modifiers

Page 15: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 15

Persistenza

Hibernate, OpenJPA, EclipseLink

database più comuni

persistence exception translation

database properties list

database properties set

database properties remove

Page 16: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 16

JUnit test

test integration

test mock

Page 17: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 17

Finder dinamici

Roo evita la scrittura di JPA Query language findersAggiunti come metodi statici alle entity

finder list

finder add

Page 18: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 18

MVC controller scaffold

– Automatic REST controller per una entity – Automatic JSP creazione e manutenzione

–modifica dei metodi permessi (CRUD subset)

controller all

Scaffold di tutte le entity

controller class Solo il Controller nudo e crudo

Page 19: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 19

MVC

Spring JS, Tiles e URL Rewrite

selenium test

webflow

Page 20: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 20

Smtp e JMS

email sender setup

field email

jms setup

field jms setup

jms listener class

Page 21: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 21

Build System Integration

perform clean -> mvn clean eclipse:clean”

perform eclipse -> mvn eclipse:eclipse

perform tests -> mvn test

perform package -> mvn package

perform command -> custom mvn command

Page 22: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 22

Varie

security setup imposta spring security

bundlor setup imposta Bundlor per OSGi

logging setup imposta log4j

script esegue uno script

perform command -> custom mvn command

Page 23: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 23

Add-On

Si possono creare degli addon, i comandi

predefiniti sono:

addon list

addon install

addon uninstall

addon cleanup

Page 24: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 24

Upgrade

Quando si aggiorna roo, possono cambiare i file .aj, che sono gli unici che l’utente non deve toccare

perchè sono i responsabili della generazione attiva del codice

Page 25: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 25

Remove

1) Nell’ STS utilizzare push-in refactoring, questa trasferisce il contenuto dei file .aj nei file .java

2) Rimuovere I jar di ROO Annotation dal pom.xml

3) Rimuovere le annotazioni @Roo dai file .java

Page 26: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 26

Database embedded

Q & A ?

Page 27: Spring Roo JaxItalia09

Massimiliano Dessì, Pronetics S.p.a 27

Grazie per l’attenzione ! Massimiliano Dessì

desmax74 at yahoo.it massimiliano.dessi at pronetics.it

http://twitter.com/desmax74 http://jroller.com/desmax

http://www.linkedin.com/in/desmax74 http://wiki.java.net/bin/view/People/MassimilianoDessi

http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi

Spring Framework Italian User Group http://it.groups.yahoo.com/group/SpringFramework-it