Сохранить и использовать параметры конфигурации приложения в базе данных для приложения Grails? - PullRequest
1 голос
/ 10 января 2012

в настоящее время мы используем файлы конфигурации для хранения настроек приложения.Мне было интересно, возможно ли сохранить эти настройки в базе данных, и если да, то как этого добиться?

Привет

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Вы можете хранить все, что вы хотите, в базе данных и считывать ее, используя класс Domain. Это особенно полезно, если вы хотите иметь возможность вносить изменения в вещи без необходимости повторного развертывания нового кода. Но имейте в виду, что вы будете подвергаться попаданию в базу данных каждый раз при обращении к свойству.

Вы можете настроить ConfigurationService с помощью:

ConfigurationService {
    static def configurationValues

    def getConfigurationValues() {
        if(configurationValues == null) {
            refreshConfigurationValues()
        }
        configurationValues
    }

    def refreshConfigurationValues() {
        configurationValues = //go get the values out of the database
    }
}

Затем вы можете добавить контроллер / действие для принудительного обновления при необходимости

ConfigurationController {

    def configurationService

    def refreshConfiguration = {
        configurationService.refreshConfigurationValues()
        render "Ahhh... That's refreshing :)"
    }
}

Теперь вы можете обновить значения конфигурации, вызвав: "http://yoururl/appName/configuration/refreshConfiguration"

1 голос
/ 11 января 2012

Это можно сделать с помощью BootStrap.groovy. Поэтому, следуя ответу Джарреда, создайте класс домена с данными конфигурации, которые вы хотите сохранить, и затем поместите эти значения в файл BootStrap.groovy. Что это делает, если значения конфигурации не существует, он создаст его, если он существует, не будет ничего делать.

Затем вы можете получить доступ к значениям вашей конфигурации, используя класс домена. Я предполагаю, что вы хотите сделать это, потому что grailsApplication.config ... иногда может стать неуправляемым.

Домен-класс MyConfig.groovy:

class MyConfig {
  String type
  String name
  String value
}

BootStrap.groovy:

def myConfig = MyConfig.findByName("path") ?: new MyConfig(
    type: "Path"
    name: "path"
    value: "/var/tmp"
).save(failOnError: true)
...