L'objet de ce billet est d'expliciter l'apport du framework Spring dans nos développements.
Les concepts de Spring IoC sont présentés accompagnés d'exemple pratique.
L'idée est de partir des critères qualifiant un code de "mauvais" puis d'indiquer les moyens de le corriger ou le contourner.
On s’appuie sur le framework Spring pour améliorer le code et ceci de manière non intrusive.
Le concept central dans le framework Spring est:
"le cycle de vie d'un composant, son assemblage et la gestion de ses dépendances doivent se faire en dehors du composant lui-même"
Il découle que le code de "plomberie" pour gérer les instances de classes (beans) ne sont plus à faire par le développeur.
Une connaissance sommaire de Spring facilite la lecture de ce billet.
Dans l'exemple pratique de ce billet, on recourt aux annotations pour l'injection des dépendances entre les instances de classes (beans).
Auteur
Abderrazek CHINE
Chef de projet web Java/JEE, expérimenté sur de grands projets norme iso 900x, Abderrazek a découvert le monde Java à la fin des années 90 : JNI (Java Native Interface) et les premières applications JSP. Il a depuis réalisé et dirigé des projets JEE d'envergure (EJB2 et 3, Web Services, Spring sur Tomcat, JBoss, Weblogic), en particulier chez des éditeurs et des clients institutionnels. Il rejoint Netapsys en octobre 2009 en qualité de chef de projet et intervient pour le compte du Ministère de la Santé.
L'apport du framework Spring
Eclipse: Rafraîchir automatiquement (Refresh automatically)
On répond ici à la question, que tout développeur utilisant L'IDE Eclipse, aurait posé au moins une fois :
Peut-on rafraichir automatiquement sans incessamment appuyer sur la touche "F5" ou passer par le menu?
La réponse est oui.
Voici les détails.
Les Web Servlet Filters et le cryptage -1ère partie
L'objectif du billet est d'expliquer par des exemples concrets la notion de « Filter » (ou Web Filter, en français Filtre).
Pour vraiment comprendre la notion de « Servlet Filter » il faudrait les voir en action sur des exemples réels.
C'est justement ce que nous présentons ci-dessous.
La première partie de ce billet monte une démo simple mais très utile car elle détaille la création d'une « Servlet Filter » qui transforme la requête HTTP POST en simulant le cryptage du mot de passe.
Aucun pré-requis n'est exigé pour cette partie.
Dans la seconde partie, la démo s'intéresse à l'intégration du « Filter » à une application Web existante
basée sur spring-security 2.x. Plus précisément, la « Servlet Filter » agit sur les « Filtres » de spring-security.
Cette seconde partie, d'un niveau très avancé, est réservée à ceux connaissant parfaitement spring et spring-security.
Ce qui est commun entre les deux parties est que nous partons d'une application Web existante et nous ajoutons les transformations utiles avec le filtre sans modifier le code java/jsp. Seul le fichier descripteur « web.xml » sera mis à jour.
NOTE. Les dépendances nécessaires seront indiquées.
Le duo Spring et Scala en 20 minutes
Réunir le duo "Scala" et "Spring" dans une démo est une belle entreprise.
Combiner le meilleur des deux rapidement est une expérience excitante!:)
A Netapsys, Spring est bien présent dans tous les projets J2EE.
Scala aura-t-il le même sort? Ce qui est sûr, Scala a tous les atouts pour.
Sur le net, bien que ce sujet est peu abordé mais vous trouvez ici un article intéressant sur ce thème.
Ce billet vous présente une démo qui montre comment, en 20 minutes, réaliser cette expérience (magique :)).
La démo reprend l'exemple d'envoi de mail (voir ici) que je recommande sa lecture :).
Passons aux choses pratiques...
Langage Scala [3ème partie]
Nous avons vu dans la seconde partie quelque concepts de scala qui vous ont donné l'envie de poursuivre la découverte de scala.
L'apprentissage de scala nous donne l'opportunité de redécouvrir ce que nous connaissons au quotidien: le monde java/j2ee.
Et nous encourage aussi à porter un regard critique sur le code que nous produisons.
Ce qui est sûr est que la liste des grands clients séduits par scala s'allonge: Sony, SAP, Siemens, EDF,...
Nous avons évoqué le concept "tout est fonction" dans scala, plus précisément, une fonction est un objet avec la méthode "apply".
Le plan de cette 3ème partie est comme suit:
- Connexion JDBC, - Retour sur les constructeurs et les annotations
Avec ces annotations, c'est fini la galère des getters/setters (même s'ils sont générés par EDI).
Les démos sont testés avec eclipse sous windows.
Langage Scala [2ème partie]
Nous avons vu dans la première partie une introduction de scala avec des démos de ses concepts de base.
Ces démos, j'espère, vous ont donné l'envie de découvrir ce langage fort intéressant.
Dans le passé, l'informatique a été révolutionnée avec le concept "tout est objet" et il me semble qu'un
nouveau concept "tout est fonction" va marquer l'informatique de demain.
Scala tente de rapprocher ces deux concepts en donnant de la liberté aux développeurs de faire le choix
Scala impose un typage statique strict mais lève les restrictions imposées par certains concepts java. Nous y reviendrons dans la 3ème partie.
L'attrait de scala est dans le fait que les meilleures choses qui existent dans les langages récents (objet ou fonctionnel) sont désormais à portée de main.
Passons à la pratique...
Le plan de ce billet est comme suit:
- Lecture de fichier dans scala; - Notion de traits (interface ou classe abstraite) - Connection JDBC dans scala
En java, comment tester en simulant l'envoi de mail?
L'objet de ce billet est de répondre à la question posée dans le titre. Précisément, en mode non connecté, comment simuler l'envoi de mail?
Ici, on ne traite pas la notion d'envoi en masse.
C'est un problème récurrent qui s'impose avant ou durant les tests/recettes des programmes java envoyant des mails (surtout en masse).
L'utilisation du serveur mail de l'entreprise (ou de gmail) peut être pénalisant surtout lorsqu'il s'agit d'envoi en masse ou encore durant les mises au point.
En six actes, nous donnons la démarche accompagnée d'une démo.
La démo s'appuie sur Spring bien qu'il n'est pas nécessaire ici (mais difficile de s'en passer).
En effet avec Spring, nous écrivons beaucoup moins de plomberie de l'API mail java.
La démo est un projet Java standard.
Toutes les indications de configuration des jar nécessaires ou de Spring sont détaillées.
La démo est réalisée sous windows mais le principe est le même pour les machines linux.
Passons à la pratique...
Langage Scala [1ère partie]
En quelques démos, nous allons illustrer l’intérêt (et la puissance) du langage Scala. Ces démonstrations sont réalisées sous Windows avec Eclipse Helios et le plugin scala. Vous dites encore un nouveau langage à apprendre! Rassurez-vous, j’ai eu la même réaction que vous. Sachez que le site social Twitter utilise Scala (en abandonnant Ruby). Il faut préciser que Scala est un langage pur objet et en plus:
* scala compilé produit du « bytecode » exécutable dans la JVM, * la syntaxe de Scala est proche de Java, * l’API java est supporté dans Scala,
Sachez qu'aucun prérequis n'est nécessaire (peut être faire l'exemple HelloWorld ici).
Le plan du billet est le suivant :
- une introduction pour tenter d’expliquer l’utilité de Scala,
- un premier exemple pour illustrer l’intérêt de Scala,
- plusieurs démo sur les concepts de Scala.
AGILE & MORE EFFICIENT : Test JUnit, EasyMock & Spring
Ce billet aborde l'aspect purement technique de mise en oeuvre de l'agilité dans le développement d'applications robustes.
Il s'inscrit dans la continuité du séminaire de Netapsys sur le thème "Agile & more efficient".
Il présente les tests JUnit 4.x et EasyMock sous Spring afin de concrétiser "être agile".
EasyMock permet de simuler l'accès aux fonctionnalités des couches applicatives, par exemple la couche DAO.
Un des piliers de l'agilité est TDD (Test Driven Development).
Le TDD est une approche évolutive de réalisation de projets basés sur les tests avant même de produire du code effectif.
TDD combine le TFD (Test First development) et le refactoring afin d'arriver à affiner / définir les spécifications.
Easymock et JUnit constituent donc les briques afin de réaliser le TDD via les tests unitaires et d'intégration.
En fait, les tests unitaires sont faciles à mettre en place mais les tests d'intégration restent encore difficiles.
Et le coût de réaliser les tests d'intégration est pesant.
Et EasyMock permet la mise en place des tests sans pour autant avoir développé une ligne de code d'implémentation des couches applicatives.
Tous ces aspects vont être explicités ci-dessous.
Spring annotations vs standards annotations: Que choisir entre @Autowired et @Resource?
L'objet de ce billet, en deux parties, est de comparer l'annotation standard @Resource du package javax.annotation.Resource à celle de
spring @Autowired du package org.springframework.beans.factory.annotation.
Nous verrons les situations où nous sommes obligés de favoriser les annotations standards.
L'utilisation des annotations réduit considérablement la verbosité des fichiers de configuration de Spring.
C'est aussi le même constat pour d'autres frameworks.
En effet, le principe "convention Over configuration" participe à cette diffusion.
Certes, les "pour" et les "contre" ne manqueront pas d'arguments pour débattre.
Mais ceci n'est pas l'objet de ce billet.
L'objectif ici est de comparer ces deux types d'annotations.
Pour cela, nous nous appuyons sur un projet java simple, sans maven, que vous pouvez créer sous Eclipse en suivant les étapes décrites ci-après.
Nous écrivons d'abord un projet avec les annotations de Spring puis nous illustrons les difficultés qui nous amèneront à introduire les annotations standards.