我有个问题。我想创建一个工作,但不是在应用程序启动时。我想从 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)
它有效。