Java Spring批处理未运行作业的Spring引导应用程序
我已经创建了spring启动应用程序。我正在篡改它,并且基本上已经将它复制到两个作业中,因为我正在创建一个更大的应用程序,它将以这种方式构造。但什么都没有发生,我知道这很可能是我错过的小东西 如果我像本教程一样将所有内容都塞进一个包中,效果会很好,但是如果我将Java Spring批处理未运行作业的Spring引导应用程序,java,spring,spring-boot,spring-batch,Java,Spring,Spring Boot,Spring Batch,我已经创建了spring启动应用程序。我正在篡改它,并且基本上已经将它复制到两个作业中,因为我正在创建一个更大的应用程序,它将以这种方式构造。但什么都没有发生,我知道这很可能是我错过的小东西 如果我像本教程一样将所有内容都塞进一个包中,效果会很好,但是如果我将Application.java提取到它自己的包中,它似乎不承认其他两个包。即使是通过-Dspring.batch.job.names=myJob传递 这就是我的主要课程的全部内容: @SpringBootApplication @Enab
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
位于不同的包作用域时,如何使该命令工作?有没有办法让它看到那些
编辑:看起来我可以用
@Import({Job1BatchConfiguration.class, Job1JobCompletionNotificationListener.class, Job2BatchConfiguration.class, Job2JobCompletionNotificationListener.class})
但如果我的工作超过三份以上,这个解决方案就显得非常草率。有没有办法为作业压缩此功能?在
应用程序
类中添加指向更高包的@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
啊,你好。我知道我遗漏了一些小东西,完全忽略了它的功能。我离开了办公室,所以当我回来的时候,我一定会试试这个,我相信我会发现我的问题会得到解决。再次感谢你的帮助,伙计