Je veux juste savoir s'il y a une étendue "travail" dans le lot de printemps, comme la lunette "Step"? S'il n'y en a pas, devrions-nous développer notre portée personnalisée ou y a-t-il une meilleure alternative? P>
Merci d'avance. P>
3 Réponses :
Si votre haricot de données contient l'état, vous pouvez l'essayer avec un périmètre de haricot par exemple Prototype p>
Mais avec la portée des prototypes, chaque fois que je ferai référence à mon haricot de données d'une étape d'emploi, un nouveau haricot serait créé? Moi, j'aimerais utiliser le même haricot de port de données de tous les étapes d'un travail donné.
Je ne suis toujours pas vraiment sûr de votre usecase, mais un état partagé simple de threadsafe pourrait être accompli avec Docs.oracle.com/javase/Tutorial/essential/concurrency/...
Merci Michael pour votre aide, pour résoudre mon problème, je crée enfin un haricot de données (singleton), contenant la méthode getdataholder (int Jobid) renvoyant le porte-data associé au Jobid donné. J'ai déclaré mon haricot de port de données en tant que prototype et j'ai utilisé la fonction de ressort de la méthode de recherche sur le haricot de Data TolderResolver, pour obtenir une nouvelle référence du titulaire de données, si elle n'est pas encore créée et mise en cache pour un JOBID donné. Mais, je pense qu'il sera utile de disposer du champ d'application de «travail» dans la prochaine version du lot de printemps.
Une JIRA a été ouverte il y a une fois sur le suivi des problèmes de lots de printemps concernant ce problème: https://jira.springsource.org/browse/batch-1701 P >
Une demande de traction a également été soumise, espérons-le qu'il fusionnera bientôt, car j'ai aussi ce cas d'utilisation: https://github.com/springsource/spring-batch/pull/41 p>
Il y a plusieurs solutions de contournement dans la période moyenne, chacune avec son inconvénient, Voir cette réponse sur Stackoverflow: https://stackoverflow.com/a/8121102/470107 p>
Je pense que le troisième lien est la bonne façon de le faire: vous avez une "lunette d'exécution de l'emploi", qui est meilleure qu'une portée "travail" si vous souhaitez avoir chaque thread isolé avec ses propres données
Enfin, Spring Batch 3.0 prend en charge la portée du travail code>: Quoi de neuf dans le lot de printemps 3.0 p>
Pouvez-vous prolonger votre question avec plus de détails sur ce que vous voulez réaliser?
J'ai créé un haricot de données pour partager des données entre différentes étapes du travail. Mon travail, pourrait être exécuté asynchroniquement par plusieurs threads, donc pour les exigences de la sécurité de thread-Safety, je souhaitais créer un haricot de prise de données par travail exécuté.