java - Spring 无法解析占位符

标签 java spring

我对 spring 还很陌生,所以如果这是一个愚蠢的问题,请原谅。当我尝试启动程序时,我收到以下错误:java.lang.IllegalArgumentException:无法解析字符串值 [${appclient}] 中的占位符“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 注释应该保留在那里。

关于java - Spring 无法解析占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307237/

相关文章:

java程序编译

java:中断线程是绝对必要的

java - 使用 @InjectMocks 注入(inject) String 属性

mysql - Hibernate HQL 中的通用日期格式函数

java - JPA持久对象异常: detached entity passed to persist

java - Jetty 和 Jersey 未加载父类(super class)

java - 调用 EntityManager.find() 后 MySQL 中的待处理进程

java - 如何从存储为 r、g、b 的像素创建图像,每个像素在数组中占据不同的位置?

抽象类 : No unique bean is defined 上的 Spring Autowire 注释

java - get 和 post 的相同请求映射不适用于 spring