Micronaut Считать строку подключения базы данных из файла Groovy code - PullRequest
0 голосов
/ 26 февраля 2019

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

в Gitter Я получил совет использовать значение micronaut.config.files, но оно не работает.

Я определил значения подключения к БД вdbinfo.properties file, затем обновите build.gradle file таким образом.

run {
    environment('micronaut.environments','dev')
    environment 'micronaut.config.files', 'C:\\shared\\application.dev.properties'    
}

in application.yaml

dataSource:
  url: ${DBURL}
  dbCreate: create-update
  pooled: true
  jmxExport: true
  driverClassName: com.mysql.cj.jdbc.Driver
  dialect: org.hibernate.dialect.MySQL5InnoDBDialect
  username: ${DBUSER}
  password: ${DBPASSWORD}

, когда я запускаю его сообщение об ошибке ниже.

Caused by: io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [org.grails.orm.hibernate.HibernateDatastore]: Could not resolve placeholder ${DBURL} in value: ${DBURL}

Есть ли пример кода для чтения строки подключения базы данных из файла Код Micronaut Groovy?

Спасибо

SR

Обновление: 2/26/ 19

Я обновил build.gradle файл, подобный этому, все еще та же ошибка.

run {
    systemProperty('micronaut.environments','dev')
    systemProperty('micronaut.config.files', 'C:\\shared\\application.dev.properties')
}

из Application.grooy файл

class Application {
    static void main(String[] args) {      
        String filename=System.properties['micronaut.config.files']
        File f= new File(filename)
        if( f.exists()){
            println "File found: $filename"
            println f.text
        } else{
            println "file not found : $filename"
        }
        Micronaut.run(Application)
    }
}

Ошибкасообщение

19:31:49.925 [main] INFO  i.m.context.env.DefaultEnvironment - Established active environments: [dev]
19:31:50.700 [main] INFO  i.m.c.h.g.HibernateDatastoreFactory - Starting GORM for Hibernate
19:31:50.925 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: Bean definition [org.grails.orm.hibernate.HibernateDatastore] could not be loaded: Error instantiating bean of type [org.grails.orm.hibernate.HibernateDatastore]: Could not resolve placeholder ${DBURL} in value: ${DBURL}
io.micronaut.context.exceptions.BeanInstantiationException: Bean definition [org.grails.orm.hibernate.HibernateDatastore] could not be loaded: Error instantiating bean of type [org.grails.orm.hibernate.HibernateDatastore]: Could not resolve placeholder ${DBURL} in value: ${DBURL}
    at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1040)
    at io.micronaut.context.DefaultApplicationContext.initializeContext(DefaultApplicationContext.java:201)
    at io.micronaut.context.DefaultBeanContext.readAllBeanDefinitionClasses(DefaultBeanContext.java:2034)
    at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:156)
    at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:143)
    at io.micronaut.runtime.Micronaut.start(Micronaut.java:67)
    at io.micronaut.runtime.Micronaut.run(Micronaut.java:274)
    at io.micronaut.runtime.Micronaut.run(Micronaut.java:260)
    at webapp.Application.main(Application.groovy:30)
Caused by: io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [org.grails.orm.hibernate.HibernateDatastore]: Could not resolve placeholder ${DBURL} in value: ${DBURL}
    at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1335)
    at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:1902)
    at io.micronaut.context.DefaultBeanContext.loadContextScopeBean(DefaultBeanContext.java:1543)
    at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1038)
    ... 8 common frames omitted
Caused by: io.micronaut.context.exceptions.ConfigurationException: Could not resolve placeholder ${DBURL} in value: ${DBURL}

1 Ответ

0 голосов
/ 26 февраля 2019

Вы путаете переменные окружения с системными свойствами

run {
    systemProperty('micronaut.environments','dev')
    systemProperty('micronaut.config.files', 'C:\\shared\\application.dev.properties')  
}

РЕДАКТИРОВАТЬ: Вышеприведенное приведёт к тому, что файл станет источником свойств в приложении, однако он не будет предоставлять переменные среды, такие как DBURL.Не имеет смысла пытаться использовать файл конфигурации для предоставления этих значений.

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

Например, удалите dataSource.url из application.yml, а затем установите dataSource.url=someurl в C:\\shared\\application.dev.properties

...