Spring Roo & Google Web Toolkit
Architecture Roo
Implémentation
Ci-dessous se trouve un schéma montrant l'implémentation de Roo. Roo est donc basé sur des Add-ons. Ces dernier vont mettre à jour tous les fichiers de votre projet, grâce notamment à des annotations

Générateur de code
Roo est basé sur l’utilisation avancé de l’AOP à travers le framework AspectJ. Le code généré est séparé en un fichier souche minimaliste et en plusieurs fichiers d’aspects qui sont assemblés par le processeur AspectJ au moment de la compilation. C’est cette séparation qui rend possible la génération de code et l’écriture manuelle en parallèle.
Voici un exemple de souche de code :
@Entity
@RooEntity
@RooJavaBean
@RooToString
public class Person {
@NotNull
private String name;
@NotNull
private String lastName;
@Temporal(TemporalType.TIMESTAMP)
private Date birthDate;
}
Les tags du type @RooXXX ne persistent pas dans le bytecode et permettent à Roo d’effectuer le lien avec les aspects au moment de la compilation. Le système mis en place se base sur la notion de métadonnées (dont les annotations font partie), ce qui le rend suffisamment souple pour supporter un mécanisme d’add-ons. Chaque type de code (getter et setter, méthodes de persistance, méthodes de contrôleur) est généré par un add-on différent, ce qui rend possible l’apparition de générateurs pour d’autres technologies telles que JSF.
Le compiler AspectJ va se charger de lire les fichiers Java et AspectJ pour former un fichier .class. Tous ce processus est résumé dans le schéma ci-dessous

Technologies compatibles :
Ci-dessous se trouve une liste non exaustive des technologies compatibles avec Spring Roo :
IDE : Eclipse
- Apache Maven (version 2.2 or above)
- Apache OpenJPA (as a JPA implementation)
- Apache Tomcat (hosted execution support)
- AspectJ Development Tools (Eclipse plugin)
- Cloud computing (via SpringSource Cloud Foundry, Google App Engine and VMforce)
- Dojo Toolkit (via Spring JavaScript)
- Google Web Toolkit (since GWT 2.1, including GWT 2.1 features like request factory)
- Hibernate (as a JPA implementation)
- Java Bean Validation (JSR 303) (including Hibernate Validator)
- Java Database Connectivity (for JPA usage)
- Java Persistence API (multiple implementations)
- Java Server Pages (default MVC views)
- JSON (methods in classes for serialization, deserialization and REST support)
- JUnit (automated tests for user projects)
- Log4J (installation and configuration)
- OSGi (the Roo tool is built on OSGi)
- Selenium (automated tests for user projects)
- Spring Framework (version 3 or above)
- Spring Security (version 3 or above)
- Spring Web Flow (installation and flow definition)
- SpringSource Tool Suite (STS has an embedded Roo shell and Roo command helpers)
- Web application resource (WAR file) (for deployment packaging)
Roo add-ons (extensibilité) :
Etant donné que Roo est basé sur des Add-ons, il n'est pas impossible d'ajouter son propre Add-ons et donc ces propres commandes. En effet, cela permet à Roo d'avoir un panel de technologie impréssionnant.