Micronaut 从文件 Groovy 代码中读取数据库连接字符串
Micronaut Read data base connection string from file Groovy code
目前我正在application.yaml
文件中设置数据库连接信息。对于生产部署,我需要从文件中读取数据库连接字符串。
在 Gitter 中我得到了使用 micronaut.config.files
值的提示,但它不起作用。
我在 dbinfo.properties
文件中定义了数据库连接值,然后将 build.gradle
文件更新为这样。
run {
environment('micronaut.environments','dev')
environment 'micronaut.config.files', 'C:\shared\application.dev.properties'
}
在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}
您混淆了环境变量和系统属性
run {
systemProperty('micronaut.environments','dev')
systemProperty('micronaut.config.files', 'C:\shared\application.dev.properties')
}
编辑:以上将导致文件成为应用程序中的 属性 源,但它不会提供像 DBURL 这样的环境变量。尝试使用配置文件来提供这些值没有意义。
直接为这些值提供环境变量,或者从配置中删除这些值并允许导入的配置文件提供它们。
例如,从application.yml
中删除dataSource.url
,然后在C:\shared\application.dev.properties
中设置dataSource.url=someurl
目前我正在application.yaml
文件中设置数据库连接信息。对于生产部署,我需要从文件中读取数据库连接字符串。
在 Gitter 中我得到了使用 micronaut.config.files
值的提示,但它不起作用。
我在 dbinfo.properties
文件中定义了数据库连接值,然后将 build.gradle
文件更新为这样。
run {
environment('micronaut.environments','dev')
environment 'micronaut.config.files', 'C:\shared\application.dev.properties'
}
在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}
您混淆了环境变量和系统属性
run {
systemProperty('micronaut.environments','dev')
systemProperty('micronaut.config.files', 'C:\shared\application.dev.properties')
}
编辑:以上将导致文件成为应用程序中的 属性 源,但它不会提供像 DBURL 这样的环境变量。尝试使用配置文件来提供这些值没有意义。
直接为这些值提供环境变量,或者从配置中删除这些值并允许导入的配置文件提供它们。
例如,从application.yml
中删除dataSource.url
,然后在C:\shared\application.dev.properties
dataSource.url=someurl