0

我有个问题。我想创建一个工作,但不是在应用程序启动时。我想从 pingServcie 调用方法但为空。

这是我的代码:

职位类别

class MyJob implements Job {

def pingService

 @Override
    void execute(JobExecutionContext context) throws JobExecutionException {
      pingService.checkPing()
   }
}

我在某处读到我的 Service 类需要 bean,因为 Spring Autowire 在这种情况下不起作用,所以我创建了它(我从不使用 bean,所以如果这是正确的,我就不使用)。我创建resources.xml而不是resources.groovy

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean name="pingService" class="inzynierka.PingService" />
</beans>

但这不起作用。

最后,我做了这样的事情。

class MyJob implements Job {

def PingService pingService

 @Override
    void execute(JobExecutionContext context) throws JobExecutionException {
      JobDataMap dataMap = context.getJobDetail().getJobDataMap();
      pingService = dataMap.getWrappedMap().get("pingService")
      pingService.checkPing()
   }
}

我像这样在不同的班级传递参数

job.getJobDataMap().put("pingService", pingService)

它有效。

4

0 回答 0