没有名为 'myJobPerformable' 的 bean 可用
No bean named 'myJobPerformable' available
我正在尝试从后台向导处理程序执行一个 cronjob。
- CronJob 项目定义在 mybackoffice-items.xml, myCronJob
- 作业可执行 bean 在 mybackoffice-backoffice-spring.xml 中定义,myJobPerformable
- 向导处理程序 bean 在 mybackoffice-backoffice-spring.xml、myHandler
中定义
myHandler 从其 perform() 中调用 executeJob():
private void executeJob() {
String springId = "myJobPerformable";
String id = springId;
JobModel myJob = getJob(springId).orElseGet(createJob(id, springId));
id = String.valueOf(this.keyGenerator.generate());
CronJobModel myCronJob = createCronJob(id, myJob);
this.cronJobService.performCronJob(myCronJob);
}
private Optional<JobModel> getJob(String springId) {
ServicelayerJobModel myJob = new ServicelayerJobModel();
myJob.setSpringId(springId);
try {
return Optional.ofNullable(flexibleSearchService.getModelByExample(myJob));
} catch (ModelNotFoundException e) {
return Optional.empty();
}
}
private Supplier<JobModel> createJob(String id, String springId) {
return () -> {
ServicelayerJobModel myJob = modelService.create(ServicelayerJobModel.class);
myJob.setCode(id);
myJob.setSpringId(springId);
modelService.save(myJob);
return myJob;
};
}
private MyCronJobModel createCronJob(String id, JobModel myJob) {
MyCronJobModel myCronJob = this.modelService.create(MyCronJobModel.class);
myCronJob.setCode(id);
myCronJob.setActive(Boolean.TRUE);
myCronJob.setJob(myJob);
myCronJob.setSessionUser(this.userService.getCurrentUser());
myCronJob.setSessionLanguage(this.commonI18NService.getCurrentLanguage());
myCronJob.setSessionCurrency(this.commonI18NService.getCurrentCurrency());
this.modelService.save(myCronJob);
return myCronJob;
}
此代码运行时出现问题,它抛出 No bean named 'myJobPerformable' available.
但是,bean 已经在 mybackoffice-backoffice-spring.xml
中注册了
似乎将您的 bean 定义从 mybackoffice-backoffice-spring.xml
移动到 mybackoffice-spring.xml
应该修复它,因为您的 bean 然后将被注册到应用程序上下文中并可用于服务层。
希望对您有所帮助!
我正在尝试从后台向导处理程序执行一个 cronjob。
- CronJob 项目定义在 mybackoffice-items.xml, myCronJob
- 作业可执行 bean 在 mybackoffice-backoffice-spring.xml 中定义,myJobPerformable
- 向导处理程序 bean 在 mybackoffice-backoffice-spring.xml、myHandler 中定义
myHandler 从其 perform() 中调用 executeJob():
private void executeJob() {
String springId = "myJobPerformable";
String id = springId;
JobModel myJob = getJob(springId).orElseGet(createJob(id, springId));
id = String.valueOf(this.keyGenerator.generate());
CronJobModel myCronJob = createCronJob(id, myJob);
this.cronJobService.performCronJob(myCronJob);
}
private Optional<JobModel> getJob(String springId) {
ServicelayerJobModel myJob = new ServicelayerJobModel();
myJob.setSpringId(springId);
try {
return Optional.ofNullable(flexibleSearchService.getModelByExample(myJob));
} catch (ModelNotFoundException e) {
return Optional.empty();
}
}
private Supplier<JobModel> createJob(String id, String springId) {
return () -> {
ServicelayerJobModel myJob = modelService.create(ServicelayerJobModel.class);
myJob.setCode(id);
myJob.setSpringId(springId);
modelService.save(myJob);
return myJob;
};
}
private MyCronJobModel createCronJob(String id, JobModel myJob) {
MyCronJobModel myCronJob = this.modelService.create(MyCronJobModel.class);
myCronJob.setCode(id);
myCronJob.setActive(Boolean.TRUE);
myCronJob.setJob(myJob);
myCronJob.setSessionUser(this.userService.getCurrentUser());
myCronJob.setSessionLanguage(this.commonI18NService.getCurrentLanguage());
myCronJob.setSessionCurrency(this.commonI18NService.getCurrentCurrency());
this.modelService.save(myCronJob);
return myCronJob;
}
此代码运行时出现问题,它抛出 No bean named 'myJobPerformable' available.
但是,bean 已经在 mybackoffice-backoffice-spring.xml
似乎将您的 bean 定义从 mybackoffice-backoffice-spring.xml
移动到 mybackoffice-spring.xml
应该修复它,因为您的 bean 然后将被注册到应用程序上下文中并可用于服务层。
希望对您有所帮助!