comment choisir ce qui ressort du lot de travail à exécuter en fonction de l'application de l'argument - printemps boot java config
J'ai deux indépendants spring batch emplois dans le même projet parce que je veux utiliser la même infrastructure liés à des haricots. Tout est configuré en Java. Je voudrais savoir si il y a une bonne façon de commencer l'emploi indépendant, fondé par exemple sur la première application java argument dans la méthode main par exemple. Si je lance SpringApplication.run
seulement le deuxième travail est exécuté par magie.
La principale méthode ressemble à ceci:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.setWebEnvironment(false);
ApplicationContext ctx= app.run(args);
}
}
et les deux emplois sont configurés comme présenté dans le Ressort du Lot tutoriel débuter au Printemps.io. Voici le fichier de configuration de la première tâche, la seconde étant configuré de la même façon.
@Configuration
@EnableBatchProcessing
@Import({StandaloneInfrastructureConfiguration.class, ServicesConfiguration.class})
public class AddPodcastJobConfiguration {
@Autowired
private JobBuilderFactory jobs;
@Autowired
private StepBuilderFactory stepBuilderFactory;
//reader, writer, processor...
}
Pour permettre à la modularisation, j'ai créé un AppConfig classe, où je définir des usines pour les deux emplois:
@Configuration
@EnableBatchProcessing(modular=true)
public class AppConfig {
@Bean
public ApplicationContextFactory addNewPodcastJobs(){
return new GenericApplicationContextFactory(AddPodcastJobConfiguration.class);
}
@Bean
public ApplicationContextFactory newEpisodesNotificationJobs(){
return new GenericApplicationContextFactory(NotifySubscribersJobConfiguration.class);
}
}
P. S. je suis nouveau sur le Printemps de la configuration Java de configuration de Spring Boot et Spring Batch...
Désolé Dave pour ma question stupide mais je suis nouveau sur le Printemps de Démarrage, Spring Batch Java et de configuration. Ce que je voudrais c'est avoir les deux+ des emplois dans la même base de code, afin qu'ils puissent partager les entités JPA par exemple..., mais encore être en mesure d'exécuter séparément en quelque sorte avec le Printemps de Démarrage.
OriginalL'auteur amacoder | 2014-08-04
Vous devez vous connecter pour publier un commentaire.
Il suffit de régler le "printemps.lot.travail.noms=myJob de la propriété". Vous pouvez l'installer comme SystemProperty lorsque vous lancez votre application (-Dspring.lot.travail.noms=myjob). Si vous avez défini cette propriété, printemps-lot-démarreur ne lancer les travaux, qui sont définis par cette propriété.
BatchAutoConfiguration
n'a pas été désactivé (il crée unJobLauncherCommandLineRunner
et transmet le travail des noms).OriginalL'auteur Hansjoerg Wingeier
Pour exécuter les travaux que vous aimez de la méthode main, vous pouvez charger le nécessaire travail de configuration de la fève et de la JobLauncher à partir du contexte de l'application puis de l'exécuter:
Ce qui était la cause de mes beaucoup de confusion était que la deuxième emploi ont été exécutés, même si la première tâche semblait être "repris" par le coureur... et Bien, le problème est que dans les deux emplois du fichier de configuration que j'ai utilisé la méthode standard de noms
writer(), reader(), processor() and step()
et il a utilisé celles de la deuxième emploi qui semblait à "écraser" le ceux de la première tâche sans aucun avertissement...J'ai utilisé si une demande de config de classe avec
@EnableBatchProcessing(modular=true)
, je pensais qu'elle serait utilisée comme par magie par le Printemps de Démarrage :Je vais écrire un billet de blog à ce sujet quand il est prêt, mais jusqu'alors, le code est disponible sur https://github.com/podcastpedia/podcastpedia-batch (travail/d'apprentissage en cours)..
OriginalL'auteur amacoder
Il est le CommandLineJobRunner et peut-être peut être utile.
De son javadoc
OriginalL'auteur Luca Basso Ricci