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 :

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.