我对 Spring 还很陌生,所以请问这是一个愚蠢的问题。当我尝试启动程序时,出现以下错误:java.lang.IllegalArgumentException: Could not resolve placeholder 'appclient' in string value [${appclient}]。执行以下代码时,将引发错误:

package ca.virology.lib2.common.config.spring.properties;
import ca.virology.lib2.config.spring.PropertiesConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;

@Configuration
@Import({PropertiesConfig.class})
@PropertySource("${appclient}")
public class AppClientProperties {
private static final Logger log = LoggerFactory.getLogger(AppClientProperties.class);
{
    //this initializer block will execute when an instance of this class is created by Spring
    log.info("Loading AppClientProperties");
}
@Value("${appclient.port:}")
private int appClientPort;

@Value("${appclient.host:}")
private String appClientHost;

public int getAppClientPort() {
    return appClientPort;
}

public String getAppClientHost() {
    return appClientHost;
}
}

资源文件夹中存在一个名为appclient.properties的属性文件,其中包含主机和端口的信息。我不确定"${appclient}"在哪里定义(如果有的话)。也许甚至没有定义,这就是问题所在。我需要将"${appclient}"更改为类似于"{classpath:/appclient.properties}"还是缺少其他功能?

最佳答案

您没有正确读取属性文件。 propertySource应该将参数传递为:file:appclient.propertiesclasspath:appclient.properties。将注释更改为:

@PropertySource(value={"classpath:appclient.properties"})

但是我不知道您的PropertiesConfig文件包含什么,因为您也正在导入它。理想情况下,应将@PropertySource批注保存在此处。

08-28 19:23