[英]How to inject dependencies in a class implementing Jobrunr ApplyStateFilter interface?
我正在尝试使用 jobrunr 实现一个项目。 我有一个用例,一旦为作业完成最大重试,就应该触发我编写的服务。 我尝试使用此答案作为参考来实现相同的目标。 一旦作业失败,就会触发过滤器逻辑,但我包含的依赖项(具有我的逻辑)返回空点异常(java.lang.NullPointerException:无法调用“com.project.service.ScheduleHistoryService.someFunc()”因为“ this.service" 为空)。 我可以在我的其他组件中使用@Autowire 注入相同的服务文件。 我在这里做错了什么? 我正在使用 jobrunr 版本 5.1.4。 附件是示例代码的屏幕截图:在此处输入图像描述
只有在 JobRunr 的 Pro 版本中才能在过滤器中注入服务。
我的破解/解决方法是在相关配置中注入服务并将其传递给 CustomRetryFilter 的构造函数:
@Configuration
public class JobRunrConfig {
@Bean
public BackgroundJobServer backgroundJobServer(
StorageProvider storageProvider, JsonMapper jobRunrJsonMapper, JobActivator jobActivator, BackgroundJobServerConfiguration backgroundJobServerConfiguration, JobRunrProperties properties,
ApplicationEventPublisher applicationEventPublisher) {
BackgroundJobServer backgroundJobServer = new BackgroundJobServer(
storageProvider, jobRunrJsonMapper, jobActivator, backgroundJobServerConfiguration);
backgroundJobServer.setJobFilters(
Collections.singletonList(
new CustomRetryFilter(
applicationEventPublisher,
properties.getJobs().getDefaultNumberOfRetries(),
properties.getJobs().getRetryBackOffTimeSeed())));
backgroundJobServer.start();
return backgroundJobServer;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.