当前位置: 首页 > 知识库问答 >
问题:

Micronaut从文件Groovy代码中读取数据库连接字符串

邵捷
2023-03-14
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代码中读取数据库连接字符串的示例代码?

run {
    systemProperty('micronaut.environments','dev')
    systemProperty('micronaut.config.files', 'C:\\shared\\application.dev.properties')
}
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个答案

晏望
2023-03-14

您混淆了环境变量和系统属性

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

Edit:上面的命令将使该文件成为应用程序中的一个属性源,但是它不会提供像dburl这样的环境变量。尝试使用配置文件来提供这些值是没有意义的。

要么直接用环境变量提供这些值,要么从config中删除这些值,并允许导入的配置文件提供这些值。

 类似资料:
  • 我已经用SQL Server Management Studio创建了一个数据库,现在我想在我的C#应用程序中使用它。我需要连接字符串? 如何发布数据库,以便Visual Studio可以获取它?然后我就可以拉出那里的连接字符串了?

  • 我有一个非常简单的问题:使用Python从txt文件中读取不同条目的最有效方法是什么? 假设我有一个文本文件,如下所示: 在C中,我会这样做: 用Python做这样的事情最好的方法是什么?以便将每个值存储到不同的变量中(因为我必须在整个代码中使用这些变量)。 提前感谢!

  • 本文向大家介绍Java读取properties文件连接数据库的方法示例,包括了Java读取properties文件连接数据库的方法示例的使用技巧和注意事项,需要的朋友参考一下 之前我们在入门jdbc的时候,常用这种方法连接数据库: 相信刚接触jdbc,用的都是这种方式,这种方式也是比较好理解的,加载驱动,带着url,用户名,密码连接数据库,代码简单易懂。同时也带来了一个最重要的问题,当有一天我们想

  • 本文向大家介绍Php连接及读取和写入mysql数据库的常用代码,包括了Php连接及读取和写入mysql数据库的常用代码的使用技巧和注意事项,需要的朋友参考一下 既然现在你看到了这篇文章,说明你肯定知道PHP和MySQL是怎么一回事,我就不啰嗦了。但为什么你还要继续阅读此文呢?可能是以前你习惯复制粘贴一些代码,并没有真正弄懂代码的含义;也可能你以前弄懂了,但像我一样,有一段时间没有接触,生疏了;再或

  • 问题内容: 任何人都知道我该如何写有JDBC连接(用户名,passwd,驱动程序,连接)的XMl文件,然后读取该XML以连接到db? 问题答案: 编写的方法如下: 假设已调用它并将其放置在类路径的根目录中,下面是一个示例,说明如何在和的帮助下加载它: 与属性文件相比,它只是非常冗长。这是此类属性文件的示例: 假设它已被命名并放置在类路径的根目录中(或它的根路径已添加到类路径中),这是从类路径中加载

  • 问题内容: 我有一个侦听某些x端口的套接字。 我可以从客户端应用程序将数据发送到套接字,但是无法从服务器套接字获得任何响应。 ..此代码部分从服务器读取数据。 但是,直到关闭服务器上的套接字,我才能从服务器读取任何内容。服务器代码不受我控制,无法对其进行编辑。 如何从客户端代码中克服这个问题。 谢谢 问题答案: 为了在客户端和服务器之间进行通信,必须明确定义协议。 客户端代码将阻塞,直到从服务器收