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

Spring Boot在读取第二个数据库时无法解析占位符

邴和雅
2023-03-14

我正在尝试从我的模块中的应用程序属性中读取第二个数据库连接信息。我的配置模块应该读取值。

@Configuration
@PropertySource(value={"classpath:application.properties"})
@ConfigurationProperties(prefix = "spring.second-datasource")
public class DatabaseConfiguration {

    @Value("${url}")
    private String url;
    @Value("${username}")
    private String user;
    @Value("${password}")
    private String password;

    public String getUrl() {
        return url;
    }

    public String getUser() {
        return user;
    }

    public String getPassword() {
        return password;
    }
}

当我在控制器内部调用DatabaseConfiguration时,它会给出一个错误。

private DatabaseConfiguration databaseConfiguration;
databaseConfiguration.getUrl();
.
.
.
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'url' in value "${url}"

我找到了一些解决方案,比如这个

Spring boot无法解析字符串中的占位符

我实现了它。

http://maven.apache.org/xsd/maven-4.0.0.xsd"

<artifactId>//artifactID</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>fraud-core</name>
<description>Demo project for Spring Boot</description>

<parent>
   //Parent
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <HMN_CDM_Facade.version>TEST-SNAPSHOT</HMN_CDM_Facade.version>
    <hmn.dependency.scope>compile</hmn.dependency.scope>
</properties>

<dependencies>
    //DEPENDENCIES
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
</build>

谢谢

共有2个答案

施阳夏
2023-03-14

@值(“${url}”),这种写入方式对应于“应用程序”。“属性”或“应用程序”。yml文件。下面是正确的写作方式。

江佐
2023-03-14

在spring boot中,您混合了两种读取配置数据的方法。

@当必须在@Component内访问单个属性时,应使用Value。。基本上这是一个

 Ex: max.threads=10
 Which can be accessed in a component using @Value.

配置属性方式是当您有多个值并且按功能分组时。

Ex: server.names:
     -
      server1
     -
      server2

现在,您应该使用配置属性。

不要两者混合。您不应该在配置属性java文件中使用@Value。

 类似资料:
  • 问题内容: 我对春天还很陌生,所以请问这是一个愚蠢的问题。当我尝试启动程序时,出现以下错误:。执行以下代码时,将引发错误: 资源文件夹中存在一个名为的属性文件,其中包含主机和端口的信息。我不确定在哪里定义(如果有的话)。也许甚至没有定义,这就是问题所在。我需要将其更改为类似的东西还是缺少其他内容? 问题答案: 您没有正确读取属性文件。propertySource应该将参数传递为:或。将注释更改为:

  • 我有个例外 我也尝试过使用JarLoader和PropertiesLauncher,但运气并不好。 我确实在application.properties中定义了属性sysm.client.api.path,但为了更好地衡量,我还将它作为-d参数-dsysm.client.api.path=my-path添加到命令行中。 注意:IntelliJ没有将其作为a-jar运行;相反,它在一个大型类路径命令

  • 问题内容: 我有我的配置: 我得到错误 我知道这可能缺少属性文件,但是我在类路径中恰好有它。有什么不见了? 我的web.xml: 问题答案: 你的应用程序中可能有多个。尝试在超类的方法上设置一个断点,看看在应用程序启动时是否多次调用了该断点。如果不止一个,则可能需要查看配置属性,以便你的应用程序可以正常启动。

  • 在我的保险库和领事整合我有以下秘密引擎enble 以以下错误结束 待覆盖的Vault-Value其他:待覆盖的Vault-Value已成功连接到数据库 在上下文初始化期间-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建名为“demo application”的bean时出错:调用init方法失败;嵌套异常为java

  • 我想对Spring Boot进行JUnit测试,如下所示: 应用程序est.java这样 我的POM是这样的: 当我运行测试时,我得到了以下错误信息 但是当我以普通Java应用程序的形式运行这个应用程序时 它工作得很好! 它怎么了?我应该如何使用Spring Boot进行jUnit测试?非常感谢!

  • 问题内容: 我要对Spring-boot进行Junit测试,如下所示: 和ApplicationTest.java这样 和我的POM像这样: 运行测试时,出现以下错误信息 但是当我将此应用程序作为普通Java应用程序运行时 运行良好! 它出什么问题了 ?我应该如何通过Spring-boot进行junit测试?非常感谢! 问题答案: 您需要添加 @PropertySource(“ classpath