【问题标题】:How to debug a @Scheduled spring boot method or a service method?如何调试@Scheduled spring boot 方法或 service 方法?
【发布时间】:2019-09-12 11:28:57
【问题描述】:

我有一个现有的 Spring Boot 应用程序,现在我需要调试一些方法。因此,这些方法是@Scheduled 或在服务类中它们由应用程序自动调用。

是否有任何选项可以通过调试调用这些方法?或者有没有其他方法可以在不更改源代码的情况下做到这一点?我可以添加一个 ApplicationRunner 或 CommandLineRunner 但我需要更改应用程序源。

谢谢

【问题讨论】:

  • 如果您不能/不想更改源代码,您只需检查哪些服务正在使用您需要测试/调试的方法,并使用 POSTMAN 调用服务。跨度>

标签: java spring eclipse spring-boot debugging


【解决方案1】:

您可以使用 SpEL 将 @Scheduled 注释的值外部化。您仍然需要更改代码,但之后它是可配置的,您可以在不更改代码的情况下更改 cron。这样,您也可以使用不同的 cron 启动它以进行调试。

如果您无法更改代码,另一种方法是使用远程调试,但您需要为此重新启动应用程序并添加此documentation 中提到的参数。

但这样一来,调用计划的方法可能需要很长时间,具体取决于 cron 或时间间隔。

【讨论】:

  • 好的,那么远程调试方法是不能调用的?
  • 据我所知,您可以通过 jmx 公开方法并以这种方式调用它们,但这也需要更改代码。请参阅此处以供参考:docs.spring.io/spring-boot/docs/current/reference/html/…
  • 这是否允许我们在不重新启动应用程序的情况下更改调度时间?
  • @Fakipo 据我所知不是开箱即用的,但是可以扩展 SpEL 以使用自定义方法启用此类功能。您可以编写一个函数来检查文件的更新并提供值。
猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 2020-05-23
  • 2010-11-14
  • 2021-04-30
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多