Sto tentando di accedere a grailsApplication
in classe groovy sotto src/groovy
ma ottengo un'eccezione di puntatore nullo. Ho anche provato a iniettare un servizio nella stessa classe e nello stesso risultato. Come posso accedere a grailsApplication
o un servizio dalla classe groovy? (Sto usando Grails 1.3.7)Access grailsApplication o Service in groovy class
risposta
L'iniezione di dipendenza non funziona con le classi groovy sotto src/groovy
. È possibile ottenere l'accesso al grailsApplication
utilizzando ApplicationHolder
come questo:
import org.codehaus.groovy.grails.commons.ApplicationHolder
def grailsApplication = ApplicationHolder.application
È possibile accedere a tutti i servizi come questo:
def allServicesArtefacts = grailsApplication.services
ha funzionato come un incantesimo! Molte grazie ! –
Per Grails 1.3.7 è una soluzione perfetta. Tuttavia per grails v2 + dovresti usare la soluzione di Tobias Kraft. – Archer
La classe ApplicationHolder è deprecato nelle versioni più recenti Grails (2.0 e superiori).
C'è un altro modo, che è descritto in una delle blogposts Burt: http://burtbeckwith.com/blog/?p=1017
ottime informazioni! Grazie! – Archer
Mi chiedo perché abbiano deprecato i loro possessori e poi ci hanno detto di scrivere i nostri stessi titolari. Se il modello non è difettoso, perché non hanno semplicemente corretto la loro implementazione? –
Il post sul blog viene spesso eliminato: per motivi di posterità, includi la risposta effettiva nel tuo post, non solo un link! – nickdos
Se si dispone di classi che si desidera partecipare con l'iniezione di dipendenza da src/barattoli groove o src/java o anche 3rd party tutti voi è necessario configurarli in grails-app/conf/spring/resources.groovy.
Se tu avessi le mypackage.MyClass classe nella directory src/groove che si presentava così:
package mypackage
class MyClass{
def grailsApplication
def myMethod(){
//uses grailsApplication
}
}
Poi aggiungendo quanto segue al graal-app/conf/primavera/resoruces.groovy otterrebbe auto-iniettato:
myClass(mypackage.MyClass){bean->
bean.autowire = "byName"
}
Ciò funzionerà in qualsiasi versione di graal thusfar, e come ho detto si può anche utilizzare 3rd vasetti parti - per esempio ho sempre la seguente nel mio resources.groovy:
jdbcTemplate(org.springframework.jdbc.core.JdbcTemplate){
dataSource = ref('dataSource')
}
Per più completa Primavera/documentazione Grails vedere:
Dopo Grails 2.0, è necessario utilizzare:
def grailsApplication = Holders.grailsApplication
- 1. Java Utility Class vs. Service
- 2. IDEA Groovy test class esiste già
- 3. Service o Thread o AsyncTask
- 4. Salvare o aggiornare in Groovy
- 5. Groovy: chiusure o metodi
- 6. Service Broker o SqlDependency in SqlLocalDb?
- 7. PHP Static Class o Namespace
- 8. Abstract Base o Helper Class
- 9. Service Fabric - Stateful Service Persistence
- 10. Tutorial o esempi di Google Guava Service?
- 11. Service DependencyInjection in Symfony2
- 12. Service Stack - Restituisce HttpResult o ResponseDTO
- 13. Che cosa significa "O (1) access time"?
- 14. Access Session.SessionID in ActionFilterAttribute
- 15. Python 2.6: Class in a Class?
- 16. Utilizzando Groovy metaclasse sovrascrivere Metodi
- 17. Esegui node-js da Java o Groovy
- 18. Grails/Groovy - utilizzando più @TestMixin
- 19. Validazione e in Service Layer o Business Objects?
- 20. MediaPlayer in thread separati utilizzando Service o IntentService
- 21. È .class un metodo o un campo?
- 22. FileLoadException A InitializeComponent o x: Class =
- 23. @Autowired ServletContext in @Service
- 24. JSON in Groovy/Grails
- 25. Template Friend Class: Forward Forward o ...?
- 26. Utilizzando una classe Groovy in altri Jenkins script Groovy
- 27. Ajax Web Service Call - No 'Access-Control-Allow-Origin' intestazione è presente
- 28. __LINE__ funzionalità in Groovy
- 29. Le chiavi della mappa sono oggetti o non in Groovy?
- 30. come aggiungere anni o mesi dalla data corrente in Groovy?
possibile duplicato del [Grails iniezione servizio 2.x in Groovy/src] (http://stackoverflow.com/questions/10640480/grails-2-x-service-injection-in-groovy-src) – ataylor