我已經創建了一個服務NotifierService
使用grails郵件插件發送電子郵件。依賴注入不能在使用郵件插件的grails作業中工作
class NotifierService {
MailService mailService
def sendWarningEmail(String name, String email, Date blockingDate) {
try {
mailService.sendMail {
to email
from "[email protected]"
subject "Status message: Warning"
body (view:"/email/warningEmail", model:[
name:name,
blockingDate:blockingDate
])
}
} catch (Exception e) {
e.printStackTrace()
}
}
}
我創造了另一種服務ApplicationUtilService
在我試圖使用NotifierService
。
class ApplicationUtilService{
def notifierService
def notifyUser(){
notifierService.sendWarningEmail("User name", "[email protected]", new Date())
}
}
我試圖打電話notifyUser()
在Grails的工作UpdateJob
class UpdateJob{
def applicationUtilService
static triggers = {
// Scehduling parameters
}
def execute(){
applicationUtilityService.notifyUser()
}
}
我收到以下錯誤
Error 2014-12-05 12:04:53,550 [quartzScheduler_Worker-1] ERROR listeners.ExceptionPrinterJobListener - Exception occurred in job: Grails Job
Message: java.lang.NullPointerException: Cannot invoke method notifyUser() on null object
Line | Method
->> 111 | execute in grails.plugins.quartz.GrailsJobFactory$GrailsJob
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 202 | run in org.quartz.core.JobRunShell
^ 573 | run . . in org.quartz.simpl.SimpleThreadPool$WorkerThread ...`
它的工作原理,當我實例爲
ApplicationUtilService applicationUtilService = new ApplicationUtilService()
而不是使用grails依賴注入。再次,ApplicationUtilService
中的notifierService
也出現同樣的問題,並通過實例化上述相同的問題進行修復。
現在,真正的問題是與mailService
。上面的實例化不起作用。我怎麼能解決它
你有沒有在'grails-app/services'下定義你的兩個服務? – injecteer 2014-12-05 12:28:06
是的,在服務 – Syam 2014-12-05 12:30:51
下定義我忘記提及我正在使用grails 2.2.4版本 – Syam 2014-12-05 12:36:53