J'ai l'application de démarrage de printemps J'ai créé from here at spring's site. Je le falsifie et je l'ai essentiellement dupliqué en deux tâches, car je crée une application plus grande qui sera structurée de cette façon. Rien ne fonctionne cependant et je sais que c'est probablement quelque chose de petit qui me manque.Application de démarrage de ressort avec le lot de printemps ne pas exécuter des travaux
Si je bourre tout dans un paquet comme le tutoriel, cela fonctionne très bien, mais si j'extrais le Application.java
dans son propre paquet, il semble ne pas reconnaître les deux autres paquets. Même en passant par -Dspring.batch.job.names=myJob
.
Ceci est tout ce qu'il ya à ma classe principale:
@SpringBootApplication
@EnableBatchProcessing
public class Application implements CommandLineRunner {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... arg0) throws Exception {
System.out.println("Running...");
}
}
La structure du projet ressemble à:
\---main
+---java
| +---app
| | Application.java
| |
| +---job1
| | Job1BatchConfiguration.java
| | Job1JobCompletionNotificationListener.java
| | Job1Person.java
| | Job1PersonItemProcessor.java
| |
| \---job2
| Job2BatchConfiguration.java
| Job2JobCompletionNotificationListener.java
| Job2Person.java
| Job2PersonItemProcessor.java
|
\---resources
sample-data-2.csv
sample-data.csv
schema-all.sql
Encore une fois, si je mets Application.java
soit dans le paquet job1
ou job2
, ce travail va s'exécuter, si je bourre tous dans un seul paquet et passe par -Dspring.batch.job.names=job1,job2
, il va exécuter les deux (ou un si je veux). Mais comment puis-je obtenir cette commande pour fonctionner lorsque le Application.java
est à une portée de package différent? Y a-t-il un moyen de le faire voir?
EDIT: Il semble donc que je peux annoter mon Application.java
avec
@Import({Job1BatchConfiguration.class, Job1JobCompletionNotificationListener.class, Job2BatchConfiguration.class, Job2JobCompletionNotificationListener.class})
Mais si je dépasse même plus que trois emplois, cette solution semble être vraiment bâclée. Un moyen de condenser cette fonctionnalité pour les tâches?
Ah, bonjour encore. Je savais que c'était quelque chose de petit qui me manquait, totalement dépassé cette fonctionnalité. J'ai quitté le bureau et j'essaierai très certainement quand je serai de retour et je suis sûr que je trouverai que mon problème sera résolu. Merci encore pour votre aide mate –