java - 在带有 Spring 的 Web 应用程序中使用 Quartz

标签 java spring maven-2 jakarta-ee quartz-scheduler

我创建了一个小型控制台应用程序来查看quartz 的工作原理,并且很容易在 main 方法中创建一个 applicationcontext 对象来运行 cron。好的,现在我处于一个由 Maven 管理的真实项目中,该项目使用某些模块中定义的 cron 作业。每个模块都有自己的 spring 配置文件。我有 3 个使用 quartz 的模块,因此它是在每个 spring 配置文件中设置的。 Web 应用程序模块是具有每个模块的依赖性的模块。

现在我几乎没有什么担忧了:

  1. 我应该像在控制台项目中一样创建applicationcontext还是应该加载它。如果是的话,我应该在哪里加载它。

  2. 根据我在网上所做的研究,我使用 MethodInvokingJobDetailFactoryBean 来轻松进行单元测试。现在我必须使用 CronExpression 类来测试 getNextValidTimeAfter,但我仍然不知道如何正确组织它

谁能帮我一下。我真的很感激。感谢您的阅读

最佳答案

根据评论,问题更接近“如何为 Web 应用程序加载 Spring 应用程序上下文文件”。

根据Section 3.8.5, "Convenient ApplicationContext instantiation for web applications" ,您可以使用 ContextLoaderListener 注册 ApplicationContext,如下所示(将其添加到您的 web.xml 文件中):

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value>
</context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- or use the ContextLoaderServlet instead of the above listener
<servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
-->

关于java - 在带有 Spring 的 Web 应用程序中使用 Quartz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520513/

相关文章:

java - 两个 @Transactional 是否在一个(同一) hibernate session 中执行?

maven-2 - maven是否将ear-element从 "defaultjavabundledir"更改为 "defaultlibbundledir",如果是的话,什么时候?

java - 使用 Cygwin 中启动的 perl 脚本运行带有 2 个参数的 Java 文件

java - 排除在 IntellIJ 中运行的测试

java - Firebase Firestore,如何抢夺Collection中最新(新)对象的变化?

java - 从数据库而不是 xml 触发quartz作业

java - 使用 Spring Rest 模板时 HttpConnection 的默认保持 Activity 时间

java - 管理 Maven 依赖关系 - 新版本和非 repo 库

java - Maven 站点部署失败,SCP 连接被拒绝 - Windows

java - 如何杀死javaw.exe