FAQ SpringConsultez toutes les FAQ

Nombre d'auteurs : 5, nombre de questions : 41, dernière mise à jour : 24 avril 2008  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.


SommaireSpring Framework (7)
précédent sommaire suivant
 

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épendance entre ces objets.

Le gros avantage par rapport aux serveurs d'applications 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 EJB). 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'EJB ;
  • la création d'EJB ;
  • 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

Mis à jour le 24 juin 2007 emi78

Developpez.com propose à l'heure actuelle plusieurs cours et articles concernant Spring :


D'autre part, la 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 exhaustive de ces livres :


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

Mis à jour le 5 août 2007 Hikage

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 :

Code xml : Sélectionner tout
1
2
3
4
5
6
<dependency> 
            <groupId>org.springframework</groupId> 
            <artifactId>spring</artifactId> 
            <version>2.5.6</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 :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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.

Mis à jour le 7 août 2007 Hikage

Lors de l'utilisation de Spring avec Maven, il se peut qu'un problème de dépendance avec JTA apparaisse :

Code shell : Sélectionner tout
1
2
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 :

Code : Sélectionner tout
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

Mis à jour le 7 août 2007 Hikage

Oui, il est tout à fait possible d'utiliser Spring dans une application Web. En effet Spring possède des intégrations avec différents frameworks 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 les possibilités de Spring.

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

Mis à jour le 22 septembre 2007 Hikage

Oui, il est possible d'utiliser Spring dans une application standalone pour gérer les couches métier, l'accès aux 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'applications Swing de haute qualité : Spring RCP.

Mis à jour le 22 septembre 2007 Hikage

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é :

Code java : Sélectionner tout
1
2
3
4
5
6
7
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'exécution de cette méthode"); 
  
}
Donc ici, chaque méthode sécurisée est responsable à la fois de la logique qu'elle doit implémenter, 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 côté, comme chaque classe à une « copie » du code de sécurité, le moindre changement doit être répercuté à plusieurs endroits.

C'est pour résoudre ces problèmes de fonctionnalités transversales que la notion de programmation orientée 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'action peuvent être définis sur la base d'expressions 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 effectuer un tissage, c'est-à-dire « introduire » le code du greffon à tous les endroits qui correspondent aux points d'action. Ce tissage pouvant être réalisé de plusieurs manières : à la compilation (où le code source sera remanié pour y introduire les appels), au lancement ou encore au chargement des classes.

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

Mis à jour le 31 août 2007 Hikage

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

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 © 2017 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 Spring : Mickael Baron - Robin56 -