Benoît CHARROUX Spring Spring IDE Ce tutorial est le premier d'une série consacrée à Spring. Cette série n'a pas pour objectif de couvrir toutes les possibilités offertes par ce framework. Il y a pour cela des livres [1] ainsi que des manuels de référence [2]. A l'opposé de l'approche exhaustive de ces ouvrages, qui requièrent d'emblée des connaissances avancées telles que Struts, Hibernate..., les tutoriaux présentés ici nécessitent uniquement, à la base, une bonne connaissance du langage Java Standard Edition. Puis, au fil des tutoriaux, les concepts de persistance dans une base de données, de transaction, de sécurité... sont abordés. De plus, l'ordre des tutoriaux suit le cycle de vie typique du développement d'un logiciel, qui commence bien souvent par l'implantation de la partie métier d'une application, se poursuit par le développement de la partie applicative, puis des services associés (la persistance...), de l'interface utilisateur, etc. En plus de la maîtrise du langage Java, la lecture de ces tutoriaux nécessite un minimum de connaissances dans la modélisation avec UML. Le lecteur qui souhaite acquérir des connaissances sur UML pourra se référer à l'ouvrage [3]. Le but de ce premier tutorial est de : –préparer l'environnement de développement basé sur Eclipse et utilisant Spring qui servira pour tous les tutoriaux à suivre ; –réaliser une première application utilisant Spring. ______________________________________________________________________________________________ 1 / 16 Benoît CHARROUX Spring Introduction à Spring Avant de débuter ce tutorial, quelques mots pour mieux cerner Spring... Spring est un framework pour développer des applications professionnelles en Java. Ce framework permet d'utiliser un ensemble de technologies, conçues par les promoteurs du langage Java, et regroupées sous l'appellation Java Entreprise Edition (JEE) [4]. JEE est censé couvrir tous les besoins, en terme de développement, d'une application professionnelle : depuis la sauvegarde des données dans des bases de données, jusqu'au développement d'interface utilisateur pour le Web, etc. Or, les technologies de JEE ont connu plus ou moins de succès. Certaines ont connu un succès immédiat et durable (Servlet, JSP...), d'autres un succès relatif (JDBC...), d'autres enfin sont assez peu utilisés (EJB...). C'est à partir de ce constat que Spring a été créé, notamment par Rob Johnson, et développé par des experts JEE. Ces derniers ont cherché à pallier les lacunes de JEE. Ils y sont parvenues s'y on en juge par la popularité de Spring au sein de la communauté des développeurs JEE. Spring va même au-delà de JEE, puisqu'il permet de programmer une partie d'une application en utilisant la POA (Programmation Orientée Aspect) [5]. Un dernier mot avant de partir à la découverte de Spring : c'est un framework Open Source suppporté par une communauté très active qui est prête, grâce à de nombreux forums, à vous aider. Alors, prêt pour Spring ? ______________________________________________________________________________________________ 2 / 16 Benoît CHARROUX Spring Matériel requis Il n'est plus envisageable aujourd'hui d'utiliser des technologies de développement sans avoir recours à un environnement de développement intégré (IDE). Spring n'échappe pas à la règle car il propose un IDE pour Eclipse appelé : Spring IDE. Eclipse [6] est donc requis pour réaliser ce tutorial : ici, c'est la version 3.4.X, appelée aussi Ganymede, qui est utilisée [7]. Cela dit, une version antérieure, Europa par exemple, fera très bien l'affaire. Eclipse se présente sous plusieurs forme : avec ou sans Java. Dans ce dernier cas, vous devez disposer de Java sur votre machine avant d'y installer Eclipse. Pour ce tutorial, c'est la version 1.5.X de Java qui est utilisée [8]. L'installation d'Eclipse ne pose pas de problème et prend quelques minutes. Les premiers tutoriaux de la présente série n'utilisent pas de technologies Web, et donc, les plugs-in idoines d'Eclipse ne sont pas indispensables. Néanmoins, vous pouvez dès à présent les installer. Ils vous permettrons d'utiliser plus tard des technologies comme Struts, JSP, Servlet... Pour être prisent en charge par Eclipse, ces technologies requiert un plug-in appelé Web Tool Plateform (WTP) [9]. Ici, c'est la version 3.0.X qui est utilisée, mais une version antérieure doit suffire. L'installation d'un plug-in dans Eclipse peut se faire automatiquement via le menu Help -> Software Updates. Cependant, une autre façon plus barbare existe pour installer des plug-ins : chaque plug-in se présente sous la forme d'un fichier compressé qui contient un répertoire appelé plugins. Il suffit de copier le contenu de ce répertoire dans le répertoire plugin d'Eclipse (il est conseillé d'arrêter Eclipse pendant l'installation). Au redémarrage d'Eclipse, le répertoire plugin sera vérifié, et le nouveau plugin pris en compte. WTP est en réalité composé d'un ensemble de plug-ins que vous pouvez télécharger et installer d'un bloc ou par partie. Après avoir installé WTP, on peut passer à l'installation du plugin Spring IDE dans Eclipse. C'est la version 2.2 qui est utilisée pour le présent tutorial [10]. Pour installer Spring IDE, procédez de la même façon qu'indiquée dans le paragraphe précédent. Il ne reste plus maintenant qu'à installer le framework Spring. Il ne s'agit pas d'un plug-in Eclipse mais de l'ensemble des classes Java qui implémentent Spring. Ce framework est disponible en plusieurs versions. Le plus simple est de télécharger le framework avec ses dépendances (framework with dependencies). C'est la version 2.5.X qui est utilisée pour ce tutorial [11]. Elle se présente essentiellement comme un ensemble de fichiers jar compressés. L'installation du framework consiste simplement à décompresser l'archive dans le répertoire de votre choix, en sachant que tous les projets utilisant Spring auront besoins d'accéder aux fichiers jar. Pour résumer, les logiciels suivants sont requis : ______________________________________________________________________________________________ 3 / 16 Benoît CHARROUX Spring –Eclipse –Spring IDE –Spring framework et pour pouvoir mener à terme cette série de tutoriaux : –WTP La partie la plus rébarbative de ce tutorial doit à présent être achevée, et nous pouvons passer à la réalisation de notre première application utilisant Spring, ce qui devrait ne prendre de quelques minutes. ______________________________________________________________________________________________ 4 / 16 Benoît CHARROUX Spring Création d'un projet Eclipse Pour débuter notre application, il faut commencer par créer un projet Eclipse : utilisez le menu File->New->Project... pour cela, en choisissant un projet Spring. ______________________________________________________________________________________________ 5 / 16 Benoît CHARROUX Spring Cliquez sur Next pour donner un nom à votre projet et pour choisir sa localisation sur votre machine (vous pouvez choisir un emplacement différent du workspace d'Eclipse). ______________________________________________________________________________________________ 6 / 16 Benoît CHARROUX Spring Afin d'avoir accès aux classes implantant Spring, il faut ajouter les librairies spring.jar et commons-logging.jar, issue du framework Spring, à votre projet : Le projet est à présent prêt à accueillir notre premier composant spring. ______________________________________________________________________________________________ 7 / 16 Benoît CHARROUX Spring Réalisation d'un composant Spring Un composant spring (spring bean) est une simple classe Java qui respecte le style Plain Old Java Object (POJO), ce qui pourrait se traduire par : le bon vieux Java des familles ! Mais avant tout, commençons par créer un paquetage pour recevoir notre classe. Pour cela, cliquez droit sur le répertoire src qui doit contenir les fichiers sources du projet, et activez le menu New -> Package. Saisissez un nom de paquetage (rss.application par exemple). Tout composant Spring doit être issu d'une interface qui déclare les méthodes du composant. Pour créer l'interface, cliquez droit à nouveau sur le répertoire src mais cette fois créer une nouvelle interface (New -> Interface). ______________________________________________________________________________________________ 8 / 16 Benoît CHARROUX Spring Donnez le nom que vous voulez à cette interface (ChannelManager par exemple). Editez ensuite l'interface et ajoutez-y vos méthodes : package rss.application; public interface ChannelManager { public void addChannel( String title ); } Pour finir l'implantation de notre composant, il ne nous reste plus qu'à créer une classe qui implémente l'interface. Utilisez pour cela le menu New->Class (accessible par un clic droit sur le répertoire src). N'oubliez pas de complétez le champ Interfaces avec le nom de votre interface et de donner un nom à votre classe (ChannelManagerImpl par exemple) : ______________________________________________________________________________________________ 9 / 16 Benoît CHARROUX Spring Implantez enfin les méthodes dans la classe : package rss.application; public class ChannelManagerImpl implements ChannelManager { public void addChannel(String title) { System.out.println("Mon premier composant Spring qui affiche " + title ); } } Jusqu'à présent, il n'y a rien d'original. C'est à partir d'ici que Spring intervient. Contrairement à une utilisation classique d'une classe dans un programme où un objet est créé avec new comme dans public class Test { public static void main(String[] args) { ChannelManager channelManager = new ChannelManagerImpl(); } } ______________________________________________________________________________________________ 10 / 16 Benoît CHARROUX Spring nous allons déclarer le composant dans un fichier XML. Pour cela, utilisez le menu New -> Other -> Spring -> Spring bean definition : ______________________________________________________________________________________________ 11 / 16 Benoît CHARROUX Spring Sélectionnez ensuite le répertoire src et donnez comme nom de fichier : applicationContext.xml ______________________________________________________________________________________________ 12 / 16 Benoît CHARROUX Spring Passer à l'écran suivant et cocher les cases beans et context : Editez le fichier XML et ajoutez y la ligne (vous pouvez passer du mode design au mode source en utilisant les onglets en bas de la page) : <bean id="channelManager" class="rss.application.ChannelManagerImpl"></bean> Au final, le fichier doit être comme ci-dessous : <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="channelManager" class="rss.application.ChannelManagerImpl"></bean> </beans> ______________________________________________________________________________________________ 13 / 16 Benoît CHARROUX Spring Test du composant Spring Il ne reste plus à présent qu'à créer et lancer un programme de test. Voici un exemple : package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import rss.application.ChannelManager; public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); ChannelManager channelManager = (ChannelManager)context.getBean("channelManager"); channelManager.addChannel("coucou"); } } où l'argument de la méthode getBean, channelManager, est le nom contenu dans la ligne suivante du fichier XML. <bean id="channelManager" class="rss.application.ChannelManagerImpl"></bean> ______________________________________________________________________________________________ 14 / 16 Benoît CHARROUX Spring Conclusions Ce tutorial a permis d'installer Spring IDE dans Eclipse et accessoirement d'écrire un premier composant Spring. Le lecteur qui connaît uniquement Java version Standard Edition doit se dire : « quoi ! tout ça pour ça ? ». C'est vrai que c'est plus compliqué qu'un simple main qui crée un objet via un new. Eh bien, la seule réponse à apporter à ce stage des tutoriaux est de reconnaître que Spring n'est d'aucun intérêt pour un projet aussi simple ! Rendez-vous donc dans les autres tutoriaux de la série pour voir l'intérêt de Spring. Le lecteur qui connaît les design patterns reconnaîtra l'utilisation d'une fabrique d'objet et il aura raison. Le lecteur qui connaît les EJB reconnaîtra l'utilisation d'un contexte pour accéder à un composant, sauf qu'avec les EJB, on utilise un lookup plutôt qu'un getBean. Au-delà de cette différence mineure, il n'est pas besoin ici d'un conteneur massif tel que JBoss par exemple. Spring au contraire utilise un conteneur dit léger, c'est à dire qu'il prend en charge le cycle de vie des objets (de la création jusqu'à leur destruction) comme tout conteneur JEE, mais sans nécessairement avoir recourt à un serveur d'applications. ______________________________________________________________________________________________ 15 / 16 Benoît CHARROUX Spring Bibliographie [1] Spring par la pratique. Julien Dubois, Jean-Philippe Retaillé, Thierry Templier. Heyrolles 2008. [2] http://www.springframework.org/documentation [3] UML 2, pratique de la modélisation. 2 ième édition. Benoît Charroux, Aomar Osmani, Yann Thierry-Mieg. Pearson Education. [4] http://java.sun.com/javaee/5/docs/tutorial/doc/ [5] http://en.wikipedia.org/wiki/Aspect-oriented_programming [6] http://www.eclipse.org/ [7] http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.4.1-200809111700/eclipseSDK-3.4.1-win32.zip [8] http://java.sun.com/javase/downloads/index_jdk5.jsp [9] http://www.eclipse.org/projects/project_summary.php?projectid=webtools [10] http://springide.org/blog/ [11] http://www.springframework.org/download ______________________________________________________________________________________________ 16 / 16