Archive

Archives pour 01/2013

La pagination facile avec Spring 3.x et jQuery.


Introduction

Qu’est ce que je veux faire ?

Mon objectif principal est la présentation de résultats de recherche sous forme de tableau avec gestion de la pagination. Du grand classique!

Quelles sont mes contraintes ?

  • Pour des raisons de performance et de bon sens, je veux que la pagination soit gérée côté serveur pour éviter de charger entièrement tous les résultats;
  • J’aimerais que la navigation entre les différentes pages de recherche soit fluide;
  • Enfin, j’aimerais en tant que développeur que ça marche et que ça soit relativement beau avec le minimum d’effort.

Comment je vais m’y prendre ?

Comme j’ai envie que ça soit beau sans faire trop d’effort, je pense très rapidement à jQuery.  Après une rapide recherche, j’opte pour un plugin très populaire de présentation de données tabulaires : dataTable. En effet, celui-ci permet en très peu de configuration de gérer la “présentation des résultats paginés” tout en déléguant la gestion de la pagination  au serveur : bingo!

Par contre, si j’opte pour cette solution les résultats à afficher devront être récupérés grâce à des requêtes AJAX. D’un côté ça m’arrange car ça me permet de coller à ma deuxième contrainte, qui était de rendre la navigation plus fluide;  mais d’un autre côté, ça m’embête un peu parce que je n’ai pas envie de rentrer dans les problématiques techniques d’AJAX.

Je fais donc ma petite enquête et me rends compte que Spring 3.x apporte un support intéressant pour AJAX censé faciliter la vie du développeur. Spring et jQuery, je signe sans hésitation et me lance dans l’aventure.
Lire la suite…

Share

Introduction à Ember.js

Cette année 2012 à été riche pour l’écosystème javascript et particulièrement pour les frameworks MVC côté client.

Je me propose dans cet article de vous présenter un challenger méconnu à côté de Backbone.js ou de Angular.js.

 

Ember.js

Ember.js

Lire la suite…

Share
Categories: Frameworks Tags: , , ,

Introduction à Spring-Batch

Contexte

Dans le cadre de la refonte d’une application extranet chez un client, j’ai été plus particulièrement chargé du développement des batchs. Les batchs à développer devaient tous réaliser des tâches similaires :

  • transferts FTP de fichiers (upload et download)
  • traitements sur les fichiers ainsi obtenus (redimensionnement d’images JPEG, parsing de fichiers XML)
  • enregistrement des méta-données sur les fichiers ainsi manipulés en base de données.

Dans l’ancienne version de l’application, les batchs étaient développés grâce à un framework interne (vieillissant). J’ai donc recherché des frameworks de batch permettant de remplacer l’ancienne architecture tout en s’intégrant avec les composants utilisés dans la partie web de l’application (développée en Spring et Struts 1).

Choix du framework

Dans un souci de facilitation de la maintenance, le choix de Spring-batch s’est rapidement imposé. En effet, la plupart des composants (DAOs, services) nécessaires pour réaliser les tâches ci-dessus avaient déjà été développés sous la forme beans Spring utilisés par l’application web ; la principale tâche restant à accomplir étant le câblage de ces différents composants. Il était donc plus efficace et plus maintenable de réutiliser les composants existants et de les injecter dans les batchs via IOC.

Le développement a donc consisté à créer les classes composant la partie « front » des batchs et à gérer leur enchaînement.

Le but de cet article n’est pas de décrire de manière détaillée le fonctionnement de Spring-batch. Il s’agit plutôt de réaliser par étapes un petit tutoriel, la documentation officielle de Spring étant très complète mais peu adaptée à une prise en main rapide : http://static.springsource.org/spring-batch/reference/html-single/index.html

Ce tutoriel traitera surtout du développement de tâches pour lesquels un composant de Spring-batch n’existe pas déjà. En effet, ce framework propose des classes permettant de mettre en place rapidement (et généralement en ne manipulant que les fichiers de configuration Spring) des tâches récurrentes dans le domaine des batchs :

  • parsing de fichiers XML pour insertion dans une base de données ;
  • export de données d’une base vers un fichier plat ;

Des exemples fonctionnels pour ces tâches sont disponibles sur le web, notamment dans la documentation officielle ; en revanche, il n’existe que très peu d’exemples de la mise en place de tâches “spécifiques” : dans le cas qui nous intéresse, ces tâches étaient par exemple l’upload/download de fichiers via FTP et de manipulation sur des fichiers images (en tant que fichiers, et donc sans lire leur contenu comme c’est le cas avec des fichiers CSV ou XML plus fréquemment manipulés par les batchs).

Lire la suite…

Share
Categories: Frameworks Tags: , ,