没有名为“myJobPerformable”的 bean 可用

Posted

技术标签:

【中文标题】没有名为“myJobPerformable”的 bean 可用【英文标题】:No bean named 'myJobPerformable' available 【发布时间】:2020-03-21 03:20:09 【问题描述】:

我正在尝试从后台向导处理程序执行 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 中注册了

【问题讨论】:

【参考方案1】:

似乎将您的 bean 定义从 mybackoffice-backoffice-spring.xml 移动到 mybackoffice-spring.xml 应该修复它,因为您的 bean 然后将被注册到应用程序上下文中并可供服务层使用。

希望对您有所帮助!

【讨论】:

很高兴它有帮助!

以上是关于没有名为“myJobPerformable”的 bean 可用的主要内容,如果未能解决你的问题,请参考以下文章

“ImportError:没有名为 selenium 的模块”

ImportError:没有名为“utils”的模块

安装了 BeautifulSoup 但仍然没有得到名为 bs4 的模块

ModuleNotFoundError:没有名为'bootstrap4'的模块

Django-Graphene: 没有名为'graphql_jwt'的模块。

关于oracle 多表关联更新的问题