Где я могу определить входные данные для grails.util.Holders.config в grails 4.0.1 - PullRequest
0 голосов
/ 13 января 2020

В Grails 2.0 я могу определить списки в Config. groovy и получить к ним доступ через grails.util.Holders.config.

Что такое соответствующая функция в Grails 4.0.1?

Ответы [ 4 ]

0 голосов
/ 15 января 2020

В Grails 2.0 я могу определить списки в Config. groovy и получить к ним доступ через grails.util.Holders.config.

Лучший ответ зависит от знания некоторого контекста из где вы хотите получить доступ к значениям, но в целом вы не должны использовать Holders.config (это верно в Grails 2, 3 и 4). Один из вариантов, который у вас есть, - позволить контейнеру DI ввести для вас List значений.

См. Проект по адресу https://github.com/jeffbrown/user3647093configlist.

https://github.com/jeffbrown/user3647093configlist/blob/7078c5edc896afd6afb0280f126794730485c564/grails-app/conf/application.yml#L1 -L7

---
music:
    drummers:
        - Neil Peart
        - Mike Portnoy
        - Bill Bruford
        - Carl Palmer

https://github.com/jeffbrown/user3647093configlist/blob/7078c5edc896afd6afb0280f126794730485c564/grails-app/init/user3647093configlist/BootStrap.groovy

package user3647093configlist

import org.springframework.beans.factory.annotation.Value

class BootStrap {

    @Value('${music.drummers}')
    List<String> drummerNames

    def init = { servletContext ->
        println 'Drummers:'
        for(String name : drummerNames) {
            println "\t$name"
        }
    }

    def destroy = {
    }
}

При запуске приложения выводится следующее:

Drummers:
        Neil Peart
        Mike Portnoy
        Bill Bruford
        Carl Palmer

Надеюсь, это поможет.

0 голосов
/ 14 января 2020

просто добавил 2 строки в конце .yml

registrierungsstati: [beantragt, in Prüfung, anerkannt] 
qualitätsnachweise:[Techniker,Bachelor,Master,Diplom,Promotion] 

и извлек их в виде списков в моем домене. Класс

List getQualitätsnachweise () { 
    GrailsApplication grailsApplication
    grailsApplication.config.getProperty('qualitätsnachweise')
}

List getRegistrierungsstati () {
    GrailsApplication grailsApplication
    grailsApplication.config.getProperty('registrierungsstati')
}

см. Также https://objectcomputing.com/news/2016/08/31/retrieving-config-values-grails-3

0 голосов
/ 14 января 2020

Исправление:

List getQualitätsnachweise () { 
GrailsApplication grailsApplication = Holders.grailsApplication
grailsApplication.config.getProperty('qualitätsnachweise')

}

List getRegistrierungsstati () {
GrailsApplication grailsApplication = Holders.grailsApplication
grailsApplication.config.getProperty('registrierungsstati')

}

grailsApplication необходимо инициализировать в обоих случаях с Holders.grailsApplication, такая же ошибка также https://objectcomputing.com/news/2016/08/31/retrieving-config-values-grails-3

Кстати, идея создания геттера для списка в доменном классе не очень хорошая идея, потому что у hibernate возникают проблемы с ним, потому что hibernate принимает геттер как поле базы данных. Поэтому я использовал

static List qualitaetsnachweise ()

вместо

stati c Список getQualitaetsnachweise ()

И будьте осторожны: grailsApplication.config.getProperty ('qualitaetsnachweise') не делает Приходя в виде списка, вы получите его в виде строки, разделенной запятыми, которую нужно преобразовать в

... .split (','). toList ()

0 голосов
/ 14 января 2020

Проверьте класс конфигурации: https://docs.grails.org/4.0.1/api/grails/config/Config.html

и в соответствии с официальными документами: https://docs.grails.org/latest/guide/conf.html#environments

Grails поддерживает Концепция конфигурации среды. Файлы application.yml и application.groovy в каталоге grails-app/conf могут использовать конфигурацию для каждой среды с использованием YAML или синтаксиса, предоставляемого ConfigSlurper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...