Po uruchomieniu aplikacji Grails uruchamiam również proces wiosennej integracji i przetwarzania wsadowego w tle. Chcę mieć niektóre właściwości połączenia DB przechowywane w pliku Config.groovy, ale w jaki sposób uzyskać do nich dostęp z klasy Java używane w procesie integracji/Batch?Dostęp do Config.groovy z klasy Java
Znalazłem ten wątek:
Converting Java -> Grails ... How do I load these properties?
co sugeruje, używając:
private Map config = ConfigurationHolder.getFlatConfig();
następuje coś w rodzaju:
String driver = (String) config.get("jdbc.driver");
to faktycznie działa w porządku (teh właściwości są ładowane poprawnie z Config.groovy), ale problemem jest t hat ConfigurationHolder jest przestarzały. A każdy wątek Znalazłem czynienia z problemem wydaje się być specyficzne i Grails sugerują stosując wstrzykiwanie zależności, jak w tym wątku:
How to access Grails configuration in Grails 2.0?
Więc jest tam zakaz przestarzałe sposób, aby uzyskać dostęp do Config.groovy właściwości z pliku klasy Java?
Co jest nie tak z drugą metodą z [zaakceptowanej odpowiedzi na pytanie, z którym łączyłeś się] (http://stackoverflow.com/a/7136095/6509)? –
Cześć Tim, okrzyki za odpowiedź. Wrzuciłem moją klasę java jako komponent bean w pliku zasobów (z właściwością grailsApplication i ref of grailsApplication) i dodałem do mojej klasy następujący wiersz: private GrailsApplication grailsApplication; z geterem i seterem. Ale kiedy próbuję uzyskać do niego dostęp za pomocą ConfigObject config = grailsApplication.getConfig(); wydaje się mieć wartość zerową i błędy. Jakieś pomysły, co robię źle? Dzięki – Illu
Gdzie próbujesz uzyskać do niego dostęp? W konstruktorze nie można używać ziaren zależnych od zależności, na przykład trzeba zadeklarować metodę opisaną za pomocą '@ PostConstruct' i umieścić logikę, która wymaga zamiast niej' grailsApplication' lub alternatywnie użyć zamiast tego argumentu do wstawiania argumentów konstruktora Setter injection. –