48 votes

Comment puis-je commencer à utiliser Spring Batch ?

J'essaie d'apprendre Lot de printemps mais le Guide de démarrage est très déroutant. Des commentaires comme

Vous pouvez avoir une assez bonne idée sur sur la façon de configurer un travail en examinant les tests unitaires dans la bibliothèque org.springframework.batch.sample (dans src/main/java) et le fichier de src/main/resources/jobs.

ne sont pas vraiment utiles. Je trouve également que le projet type est très compliqué (17 espaces de noms non vides avec 109 classes) ! Existe-t-il un endroit plus simple pour commencer à utiliser Spring Batch ?

4 votes

Je suis d'accord. Je suis en train d'explorer le framework et les échantillons ne sont pas vraiment adaptés aux débutants :)

0 votes

Je suis toujours d'accord avec l'auteur de cette question

37voto

Pascal Thivent Points 295221

1 votes

Pour ajouter à cela, si quelqu'un cherche un moyen de lancer Spring Batch à partir de Quartz (planificateur), regardez quartz-job-launcher-context.xml dans src/main/resources des échantillons.

1 votes

Il apparaît que les 3 premiers liens sont périmés, et que les 2 derniers liens sont erronés. Et il ne semble pas y avoir de livre utile à ce sujet non plus... Des suggestions ?

1 votes

Juste pour clarifier le commentaire de @James ... la échantillons sont ceux de la distribution de printemps de Batch

8voto

Caoilte Points 1268

Je suis d'accord pour dire que le guide de l'utilisateur est très confus (comparé au guide de l'utilisateur de Spring Core, en tout cas). Il n'aborde pas de manière adéquate certains problèmes très importants que vous rencontrerez dans tout scénario de traitement par lots modérément complexe.

Les éléments importants que vous devriez examiner en tant que nouveau venu et déterminer vos besoins sont les suivants,

  • configuration des exceptions (quand sauter, quand échouer, quand réessayer)
  • utilisation du contexte d'exécution pour maintenir l'état (par exemple, quand utiliser le contexte d'exécution d'une étape ou le contexte d'exécution d'une tâche).
  • maintenance générale de l'état (utiliser la portée de l'étape, en particulier pour les paramètres d'entrée)

Mais cela vaut la peine de persévérer. La programmation par lots est très différente des autres styles côté serveur et bénéficie grandement de l'approche habituelle d'"abstraction de motifs" de Spring.

5voto

WineSoaked Points 510

J'ai récemment donné un véritable essai à Spring Batch. Je dirai que dans mon implémentation, j'ai utilisé un référentiel en mémoire (parce que les redémarrages et les tentatives n'étaient pas une priorité dans les circonstances de mon projet), mais je peux apprécier ce que Richard dit à propos du JobRepository : vous devez fondamentalement creuser profondément pour trouver le schéma de la base de données.

Pour Spring Batch 2.1, ils fournissent une documentation sur le référentiel : http://static.springsource.org/spring-batch/reference/html/metaDataSchema.html y compris des discussions sur la façon de traiter les implémentations spécifiques aux bases de données. Les DDL pour la création des tables sont situées dans le fichier JAR de base de Spring Batch :

spring-batch-core-2.1.0.RELEASE.jar:/org/springframework/batch/core/*.sql

scripts sont présents pour DB2, Derby, H2, HSQLDB, MySQL, Oracle 10g, PostgreSQL, MS SQL et Sybase.

0 votes

Une autre observation à propos de Spring Batch : Je peux comprendre les sentiments des gens concernant l'API : elle semble lourde à première vue. Mais elle offre suffisamment d'avantages lorsqu'il s'agit de traiter des fichiers ASCII plats (et vous seriez surpris de voir à quel point le traitement des données anciennes utilise encore des fichiers plats de largeur fixe - la quantité de COBOL encore utilisée me fait parfois mal à la tête) pour que je décide de l'essayer. Ma dernière pensée est que la notion de contextes d'exécution des tâches et des étapes est ce qui m'a fait trébucher encore et encore dans le développement.

0 votes

Vous pouvez modifier ce commentaire dans votre question. Mais ce que vous dites est logique. Je dois aussi m'occuper des fichiers ASCII produits par COBOL, alors je vais peut-être y jeter un autre coup d'œil. J'ai toujours le vague sentiment que c'est un peu exagéré.

0 votes

Oui, c'était la toute première fois que je répondais (et commentais) sur SO, donc les mécanismes d'édition n'étaient pas clairs pour moi (comme ils le sont maintenant).

5voto

rtperson Points 7065

Avant de sauter dans le wagon de Spring Batch, vous voudrez peut-être lire ce que le cletus de SO a à dire sur ses défauts :

http://www.cforcoding.com/2009/07/spring-batch-or-how-not-to-design-api.html .

J'ai récemment évalué Spring Batch, et je l'ai rapidement rejeté après avoir réalisé qu'il n'apportait rien à mon projet, si ce n'est des lourdeurs et des surcharges. Spring Batch peut éventuellement devenir un bon produit (tout comme EJBs a bien fait les choses cette fois-ci), mais pour le moment, il ressemble étrangement à une solution à la recherche d'un problème.

0 votes

Je l'ai déjà lu. Il semble qu'il sera utile pour ce que j'essaie de faire (et pour des raisons d'architecture, je dois utiliser Spring de toute façon). Cependant, je m'inquiète de sa complexité (fichiers de configuration terriblement complexes). En bref, je suis encore en train de l'évaluer moi-même, c'est pourquoi j'ai posé la question.

0 votes

@C. Ross - Il est parfaitement possible d'utiliser Spring en combinaison avec Quartz (pour la programmation) et d'éviter complètement Spring Batch. Vous pouvez utiliser un modèle de stratégie pour généraliser les tâches et les étapes, et vous pouvez facilement créer votre propre persistance en stockant des états transactionnels sur vos données. C'est ce que nous avons fini par faire, et cela fonctionne bien. Je ne vois pas Spring Batch offrir quoi que ce soit de valeur pour compenser ses maux de tête.

1 votes

Les systèmes de traitement par lots peuvent être bien plus que de simples étapes et tâches. Si c'est tout ce dont vous avez besoin, alors très bien, mais si vous avez besoin de fonctionnalités supplémentaires telles que la répétition et la réessai, le traitement parallèle, etc. alors Spring Batch peut être une bonne solution.

3voto

Vicky Points 2035

https://github.com/langmi/spring-batch-examples

Il contient d'assez bons exemples de base.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X