Grails: Cannot invoke method sendEmail() on null object when using in service -


मैंने एक सेवा NotifierService

  वर्ग NotifierService { MailService मेल सेवा डीईएफ़ ईमेल (स्ट्रिंग ईमेल) {mailService.sendMail {"myemail@domain.com" विषय से "विषय" विषय "कुछ पाठ"}}}}   

से ईमेल करने के लिए, किसी अन्य विधि updateUser में DbService सेवा

  class DbService {NotifierService NotifierService def} में  sendEmail  विधि को कॉल करने की कोशिश कर रहा हूँ UpdateUser () {// कुछ तर्क // यूज़र ऑब्जेक्ट डीईएफ़ ईमेल = यूज़रऑब्जेक्ट.ईमेल // भेजें ईमेल भेजें {notifierService.sendEmail (ईमेल)} पकड़ (अपवाद ई) {e.printStackTrace ()}} // अन्य विधियां । । }   

जब मैं sendEmail विधि को बूटस्ट्रैप में कॉल करता हूं, लेकिन जब मैं इसे डीबीएसवाइस <पूर्व> | त्रुटि java.lang.NullPointerException: नल ऑब्जेक्ट पर विधि sendMail () को लागू नहीं किया जा सकता है | Org.codehaus.groovy.runtime.NullObject.invokeMethod पर त्रुटि (NullObject.java:77) | Org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call पर त्रुटि (PogoMetaClassSite.java 45) | Org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java45) पर त्रुटि | Org.codehaus.groovy.runtime.callsite.NullCallSite.call पर त्रुटि (NullCallSite.java:32) | Org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall पर त्रुटि (CallSiteArray.java45)

मुझे समझा गया कि मेल सेवा में NotifierService DbService में इसका उपयोग करते समय आरंभ नहीं किया जाता है मैं इसे कैसे हल कर सकता हूं?

DbService एक grails-job

  वर्ग MyJob में प्रारंभ होता है {DbService dbService = new DbService () स्थिर ट्रिगर = {// प्रारंभ विलंब: 30000 (30sec), दोहराएँ: 120000 (2 * 60 * 1000 = 2 मिनट) सरल नाम: 'myJobTrigger', प्रारंभ करें: 30000, पुनरावृत्ति अंतराल: 120000, दोहराएँकाउंट: -1} def चलाना () { Println "**************************************************************************************************** ******* "println" MyJob: "+ नई तिथि () println" ************************************************************************************ ********************************* "dbService.updateUser ()}}    

<प्री> DbService dbService = new DbService (क्लास = "पोस्ट-टेक्स्ट" आइटमप्रॉप = "टेक्स्ट">

ठीक है, यह स्पष्ट है:)

)

फिर निर्भरताएं वसंत के साथ कभी भी आबादी नहीं होंगी।

आपको इसे un-initialized छोड़ना होगा ताकि सेवा इंजेक्ट हो जाए आवेदन संदर्भ से:

  वर्ग MyJob {DbService dbService // या def dbService}    

Comments