Developpez.com - Java
X

Choisissez d'abord la catégorieensuite la rubrique :

logo
Sommaire > Spring Framework
        Qu'est-ce que Spring
        Ressources Spring ?
        Comment utiliser Spring avec Maven ?
        Comment résoudre le problème de dépendance avec JTA ?
        Peut-on utiliser Spring dans une application Web ?
        Peut-on utiliser Spring dans une application desktop ?
        Qu'est-ce que l'AOP ?

rechercher
precedent    sommaire    suivant    telechargermiroir


Qu'est-ce que Spring
auteur : Erik Gollot
SPRING est effectivement un conteneur dit « léger », c'est-à-dire une infrastructure similaire à un serveur d'application J2EE. Il prend donc en charge la création d'objets et la mise en relation d'objets par l'intermédiaire d'un fichier de configuration qui décrit les objets à fabriquer et les relations de dépendances entre ces objets.

Le gros avantage par rapport aux serveurs d'application est qu'avec SPRING, vos classes n'ont pas besoin d'implémenter une quelconque interface pour être prises en charge par le framework (au contraire des serveurs d'applications J2EE et des EJBs). C'est en ce sens que SPRING est qualifié de conteneur « léger ».

Outre cette espèce de super fabrique d'objets, SPRING propose tout un ensemble d'abstractions permettant de gérer entre autres :

  • Le mode transactionnel
  • L'appel d'EJBs
  • La création d'EJBs
  • La persistance d'objets
  • La création d'une interface Web
  • L'appel et la création de WebServices
Pour réaliser tout ceci, SPRING s'appuie sur les principes du design pattern IoC et sur la programmation par aspects (AOP).

Spring est disponible sous licence Apache 2.0

lien : en Site officiel de Spring Framework

Ressources Spring ?
auteur : Gildas Cuisinier
Developpez.com propose à l'heure actuelle plusieurs cours et articles concernant Spring :

D'autre part, la en documentation officielle de Spring est très claire et très précise. Une lecture attentive de celle-ci permet de bien commencer et répond à de nombreuses questions.


De nombreuses publications sur Spring existent, la plupart en anglais. Voici une liste non exaustive de ces livres :

Et pour répondre à vos questions, Developpez.com possède son forum Spring.


Comment utiliser Spring avec Maven ?
auteur : Gildas Cuisinier
Il est possible d'utiliser Spring dans un projet basé sur Maven de deux manières

La première est d'inclure l'intégralité de Spring dans le projet :

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.0.5</version>
            <scope>runtime</scope>
</dependency>
De cette manière un jar unique contenant tous les modules ( Core, AOP, DAO, MVC, EJB, ... ) sera récupéré.

L'autre méthode consiste à spécifier uniquement les modules utiles au projet :

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>2.0.5</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>2.0.5</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>2.0.5</version>
    <scope>runtime</scope>
</dependency>
Cela permet de réduire la taille du projet lorsque tous les modules ne sont pas utilisés

lien : Dépôt Maven pour Spring Framework

Comment résoudre le problème de dépendance avec JTA ?
auteur : Gildas Cuisinier
Lors de l'utilisation de Spring avec Maven, il se peut qu'un problème de dépendance avec JTA apparaisse :

required artifacts missing:
 javax.transaction:jta:jar:1.0.1B
La cause de ce problème est l'incompatibilité de JTA avec le dépôt Maven, et donc il ne peut pas être disponible sur celui-ci. Il est donc nécessaire de télécharger manuellement JTA sur le site de Sun : JTA

Une fois le fichier, par exemple jta-1_0_1B-classes.zip, téléchargé, il est nécessaire de l'ajouter dans le dépôt local :

mvn install:install-file -Dfile=<chemin vers le fichier téléchargé> -DgroupId=javax.transaction -DartifactId=jta -Dversion=<version du jar téléchargé> -Dpackaging=jar
<version du jar téléchargé> correspondra à la version du jar téléchargé, dans le cas de jta-1_0_1B-classes.zip, la version est 1.0.1B

lien : Jar de JTA sur le site de Sun Microsystem

Peut-on utiliser Spring dans une application Web ?
auteur : Gildas Cuisinier
Oui, il est tout à fait possible d'utiliser Spring dans une application Web. En effet Spring possède des intégrations avec différents framework tels que Struts, JSF ou même les servlets J2EE.
D'autre part, Spring possède son propre module MVC Web, aux fonctionnalités similaires à Struts mais plus évolué et possèdant toutes possibilités de Spring.

De plus, Spring fournit des moyens d'exporter les services métiers sous forme de Web Services, ou d'autres moyens équivalents ( HttpInvocker, Burlaps, RMI, EJB ), et d'utiliser ceux-ci facilement dans des clients.


Peut-on utiliser Spring dans une application desktop ?
auteur : Gildas Cuisinier
Oui, il est possible d'utiliser Spring dans une application standalone pour gérer les couches métiers, l'accès au données ou l'utilisation de Web Services.

De plus, un sous projet de Spring a pour but de fournir une plateforme afin d'aider les développeurs dans la création d'application Swing de haute qualité : Spring RCP

lien : Spring Rich Client

Qu'est-ce que l'AOP ?
auteur : Gildas Cuisinier
Dans les développements, il n'est pas rare d'avoir certaines fonctionnalités qui sont utilisées à plusieurs endroits dans un code. C'est le cas par exemple de l'écriture des traces, de la sécurité, de la gestion des transactions. Prenons le cas de la sécuritée :

private void maMethodeSecurisée()
{
   if(GestionSecurite.peutExecuter("maMethodeSecurise", nomUtilisateur){
		// Ici le code de la méthode propre       
   } else throw new ExecutionInterditeException("Vous n'avez pas les droits d'éxecution de cette méthode");
   
}
Donc ici, chaque méthode sécurisée est responsable à la fois de la logique qu'elle doit implémentée, mais aussi de la gestion de la sécurité.
Cela provoque deux problèmes : le premier, il est préférable qu'une classe ne possède qu'une seule responsabilité. D'un autre coté, comme chaque classe à une "copie" du code de sécurité, le moindre changement doit être répercuté à plusieurs endroit.

C'est pour résoudre ces problèmes de fonctionnalités transversales que la notion de programmation orienté aspect existe. Cette fonctionnalité transversale est implémentée dans ce qu'on appelle donc un aspect qui est composé de :

  • Un greffon ( ou advice ), qui est le code qui doit être exécuté
  • Des points d'action ( ou pointcut ), qui définissent quand ce code doit être exécuté
Les points d'actions peuvent être défini sur la base d'expression régulières ( sur base des types de retour et paramètres, nom du package, nom de la méthode ) et les greffons peuvent être exécutés avant, après ou "autour" du point d'action.

Ensuite, le framework d'AOP va effectué un tissage, c'est à dire 'introduire' le code du greffon à tout les endroits qui correspondent au points d'action. Ce tissage pouvant être réalisé de plusieurs manières : à la compilation ( ou le code source sera remanié pour y introduire les apppels ), au lancement ou encore au chargement des classes.

Parmis les frameworks Java pour l'AOP, les plus connus sont :

lien : Spring : Théorie et pratique
lien : Introduction à Spring AOP

rechercher
precedent    sommaire    suivant    telechargermiroir

Consultez les autres F.A.Q's


Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -