Próbuję uzyskać dostęp do grailsApplication
w groovy klasy pod src/groovy
, ale otrzymuję wyjątek wskaźnika pustego. Próbowałem również wprowadzić usługę do tej samej klasy i tego samego wyniku. Jak uzyskać dostęp do grailsApplication
lub usługi z klasy groovy? (Używam Grails 1.3.7)Dostęp do grailsApplication lub Service w groovy klasie
Odpowiedz
Wstrzyknięcie zależności nie działa dla klas groovych pod src/groovy
. Można uzyskać dostęp do grailsApplication
wykorzystaniem ApplicationHolder
takiego:
import org.codehaus.groovy.grails.commons.ApplicationHolder
def grailsApplication = ApplicationHolder.application
można uzyskać dostęp do wszystkich usług tak:
def allServicesArtefacts = grailsApplication.services
to działało jak czar! Wielkie dzięki ! –
Dla grails 1.3.7 to idealne rozwiązanie. Jednak dla Grails v2 + powinieneś użyć rozwiązania od Tobias Kraft. – Archer
Klasa ApplicationHolder jest przestarzałe w nowszych wersjach Grails (2,0 i powyżej).
Jest też inny sposób, który jest opisany w jednym z Burta blogposts: http://burtbeckwith.com/blog/?p=1017
świetne informacje! dzięki! – Archer
Zastanawiam się, dlaczego wycofali swoich posiadaczy, a następnie kazali nam pisać własnych posiadaczy. Jeśli wzór nie jest wadliwy, dlaczego po prostu nie naprawili implementacji? –
Post na blogu często zostaje usunięty - dla dobra potomności, proszę podać faktyczną odpowiedź w swoim poście, a nie tylko link! – nickdos
Jeśli masz zajęcia, które mają uczestniczyć z wstrzykiwania zależności od src/porywające lub src/JAVA lub nawet 3rd słoików wszystko co partyjnych musisz je skonfigurować w grails-app/conf/spring/resources.groovy.
Jeśli miał mypackage.MyClass klasy w katalogu src/groove, które wyglądały tak:
package mypackage
class MyClass{
def grailsApplication
def myMethod(){
//uses grailsApplication
}
}
następnie dodanie następujących do grails-app/conf/wiosna/resoruces.groovy byłoby uzyskać auto-rdzeniowych:
myClass(mypackage.MyClass){bean->
bean.autowire = "byName"
}
ta będzie działać w każdej wersji Grails thusfar, i jak powiedziałem można nawet użyć słoików 3rd party - na przykład zawsze mam następujących w moim resources.groovy:
jdbcTemplate(org.springframework.jdbc.core.JdbcTemplate){
dataSource = ref('dataSource')
}
Dla bardziej kompleksowej Wiosna/dokumentacją Grails patrz:
Po Grails 2.0, należy użyć:
def grailsApplication = Holders.grailsApplication
- 1. groovy: Jak uzyskać dostęp do pliku właściwości?
- 2. Jak utworzyć i uzyskać dostęp do zmiennych globalnych w Groovy?
- 3. Groovy 2.0.1, GroovyCastException na mojej własnej klasie?
- 4. Zakres Groovy - jak uzyskać dostęp do zmiennej skryptowej w metodzie
- 5. Groovy: Jak uzyskać dostęp do wartości już ustawionych w DataSource
- 6. Zapisz lub zaktualizuj w Groovy
- 7. Groovy + OSGi lub Grails?
- 8. Dostęp do chronionego elementu klasy w klasie pochodnej
- 9. Jak uzyskać dostęp do zmiennych członkowskich w klasie ciągów STL?
- 10. Objective-C: dostęp do własności prywatnej w odziedziczonej klasie
- 11. Jak uzyskać dostęp do pól TTestCase w klasie TTestSetup
- 12. Angular2 Custom Form Validators tracący dostęp do "tego" w klasie
- 13. Dostęp do właściwości klasy potomnej poprzez funkcję w klasie nadrzędnej
- 14. grails Dostęp do aplikacji w jednostce Grails Test
- 15. dostęp klasy Javy z poziomu Groovy
- 16. Jenkins Poświadczenia Store dostęp przez Groovy
- 17. Groovy: jak sprawdzić, czy dostęp do nieruchomości zakończy się sukcesem?
- 18. Dynamicznie dodaj właściwość lub metodę do obiektu w groovy
- 19. Czy należy przesłonić service() lub doPost()?
- 20. Injecting Translator service do FormType
- 21. Logowanie do Groovy Script
- 22. Grails/Groovy - używanie wielu @TestMixin
- 23. JSON w Groovy/Grails
- 24. Dostęp do getString() w android.support.v4.app.FragmentPagerAdapter?
- 25. W jaki sposób mogę uzyskać dostęp do gorącej wymiany Groovy w intelli?
- 26. Uruchom węzeł-js z Java lub Groovy
- 27. Metoda Groovy do listy list
- 28. usługi dostępu w regularnej klasie
- 29. Jak uzyskać dostęp do stałej zdefiniowanej w klasie potomnej z funkcji klasy nadrzędnej?
- 30. Jak używać Enum w grails (nie w klasie domeny)
możliwe duplikat [Grails zastrzyku usług 2.x w Groovy/src] (http://stackoverflow.com/questions/10640480/grails-2-x-service-injection-in-groovy-src) – ataylor