Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多模块项目中的Spring计划服务_Java_Spring - Fatal编程技术网

Java 多模块项目中的Spring计划服务

Java 多模块项目中的Spring计划服务,java,spring,Java,Spring,我有一个多模块项目,其设置如下: commons-module -CommonsApp.java (Main class) -CommonsService.java api-module -ApiApp.java (Main class) main-moudle -MainApp.java (Main class) -MainService.java CommonService和MainService都有一些业务逻辑,并且都有相应的@Scheduled注释方法来执行一些批处

我有一个多模块项目,其设置如下:

commons-module
  -CommonsApp.java (Main class)
  -CommonsService.java
api-module
  -ApiApp.java (Main class)
main-moudle
  -MainApp.java (Main class)
  -MainService.java
CommonService和MainService都有一些业务逻辑,并且都有相应的@Scheduled注释方法来执行一些批处理

MainService依赖于CommonService,它在主模块内自动连接

我的应用程序将运行在不同的VM实例上,每个模块的jar运行在自己的实例上。 如果我将commons模块作为主模块的一个依赖项来自动连接bean,那么我担心MainApp.java也会开始运行commons模块的预定方法(commonservice.java)

这样会造成巨大的资源浪费,因为这些调度方法将同时在commons模块机器和主模块机器上运行


那么,如何确保在主模块中使用commonservice.java,而不让Spring执行其中的@Scheduled注释方法呢?

我建议您使用
ShedLock

谢德洛克只做一件事。它可以确保计划的任务在同一时间最多执行一次。

我建议在自己的模块中提取计划的方法。在这里,您可以依赖于其他模块,但反之亦然。