[英]Spring Boot Application with Spring Batch not Running Jobs
我在 spring 站點上創建了 spring boot 應用程序。 我正在篡改它並基本上將它復制到兩個作業中,因為我正在創建一個更大的應用程序,它將以這種方式構建。 但是沒有任何東西在運行,我知道這很可能是我遺漏的一些小東西。
如果我像教程一樣把所有東西都塞進一個包中,它工作正常,但是如果我將Application.java
提取到它自己的包中,它似乎不承認其他兩個包。 即使通過-Dspring.batch.job.names=myJob
。
這就是我的主要課程的全部內容:
@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...");
}
}
項目結構如下所示:
\---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
同樣,如果我把Application.java
到無論是job1
或job2
包,這項工作將執行,如果我的東西他們都到一個單一的包,並通過-Dspring.batch.job.names=job1,job2
,它將執行兩者(或一個,如果我想要)。 但是,當Application.java
處於不同的包范圍時,如何使此命令起作用? 有沒有辦法讓它看到那些?
編輯:所以看起來我可以標注我Application.java
與
@Import({Job1BatchConfiguration.class, Job1JobCompletionNotificationListener.class, Job2BatchConfiguration.class, Job2JobCompletionNotificationListener.class})
但是如果我超過三個工作,這個解決方案似乎變得非常草率。 有什么方法可以為作業濃縮此功能?
在您的Application
類中添加@ComponentScan
的注釋,指向更高的包:
@ComponentScan("app")
或者,您也可以包含多個包:
@ComponentScan("app.job1", "app.job2")
這個注解不僅掃描包並注冊@Component
或其他bean,也注冊@Configuration
類。
我的問題解決了將我的主類放在我的結構的包根目錄中。
使用顯示的示例,應用程序的位置是:
\---main
+---java
| +---Application.java (Change location this file to package root)
| |
| +---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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.