Внешняя конфигурация источника данных Grails - PullRequest
36 голосов
/ 09 июня 2009

Grails 1.x позволяет использовать внешние файлы конфигурации, устанавливая директиву grails.config.locations . Существует ли аналогичный подход для вывода конфигурации базы данных в Datasource.groovy (без настройки JNDI)?

Было бы полезно иметь возможность конфигурировать учетные данные БД в простом файле конфигурации вне приложения.

Заранее спасибо!

Ответы [ 4 ]

51 голосов
/ 10 июня 2009

Вы можете использовать файл свойств, указанный в grails.config.locations, как способ вывода конфигурации источника данных. Ниже показано, как я обычно настраиваю проект Grails:

В моем DataSource.groovy я указываю это для производственной среды:

  ....
  ....
  production {
    dataSource {
        dbCreate = "update"
        driverClassName = "com.myorg.jdbcDriverNotExists"
        url = ""
        username = ""
        password = ""
    }
  }
  ....
  ....

Я указываю внешний файл свойств в моем Config.groovy:

grails.config.locations = [ "classpath:app-config.properties"]

В файле свойств (хранится в grails-app / conf /) я указываю фактическую информацию источника данных:

dataSource.driverClassName=oracle.jdbc.OracleDriver
dataSource.url=jdbc:oracle:thin:@host:port:sid
dataSource.username=sa
dataSource.password=secret

Я также использую файл свойств как способ переопределения других значений, которые есть в Config.groovy. Когда приложение развернуто, если мне нужно изменить информацию об источнике данных, я просто редактирую файл /WEB-INF/classes/app-config.properties и перезапускаю.

25 голосов
/ 26 марта 2010

Ответ, приведенный выше, на самом деле не отображает конфигурацию. Он близок, но конфигурация все еще находится в приложении. Я бы использовал среду JVM var при запуске приложения / сервера, чтобы указать местоположение вне приложения, где находится внешняя конфигурация. Считайте переменную среды в файле config.groovy и используйте его для получения внешнего файла конфигурации. Примерно так:

def extConfig = System.properties.getProperty('ENVVAR');
grails.config.locations = [ "file:${extConfig}/${appName}-config.groovy"]
1 голос
/ 29 июля 2011

Для меня это не работает. Чтобы получить переменную среды.

Лучше использовать:

System.getenv().get("ENVVAR").toString()
0 голосов
/ 28 июля 2016

Просто укажите расположение файла конфигурации, как указано ниже, в файле Config.groovy

grails.config.locations = [
            "file:/yourDirectory/${appName}/${Environment.current.name}-datasource.properties",
            "file:/yourDirectory/${appName}/${Environment.current.name}-config.groovy",
            "classpath:${appName}-${Environment.current.name}-datasource.properties",
            "classpath:${appName}-${Environment.current.name}-config.groovy"
    ]

И поместите все подробности о источнике данных и других значениях конфигурации в ваш соответствующий файл. Следовательно, вы можете перенастроить конфигурацию и не нужно перезапускать для изменения значений.

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