首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Boot在读取第二个数据库时无法解析占位符

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

Stack Overflow用户
提问于 2018-10-31 16:46:55
回答 2查看 6.1K关注 0票数 1

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

配置

代码语言:javascript
运行
复制
@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时,它给出一个错误。

代码语言:javascript
运行
复制
private DatabaseConfiguration databaseConfiguration;
databaseConfiguration.getUrl();
.
.
.

错误

代码语言:javascript
运行
复制
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'url' in value "${url}"

我找到了一些像这样的解决方案

Spring boot could not resolve placeholder in string

我实现了它。

POM.XML

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

代码语言:javascript
运行
复制
<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>

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-10-31 17:56:46

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

当您具有必须在@组件中访问的单个属性时,应使用@Value。基本上,它是一种类似于

代码语言:javascript
运行
复制
 Ex: max.threads=10
 Which can be accessed in a component using @Value.

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

代码语言:javascript
运行
复制
Ex: server.names:
     -
      server1
     -
      server2

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

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

票数 1
EN

Stack Overflow用户

发布于 2018-10-31 16:57:03

@Value("${url}"),这种书写方式对应于'application.propertice‘或'application.yml’文件。下面的正确书写方式。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53079440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档