java - Spring Boot 配置属性未设置

标签 java spring spring-boot properties

我正在尝试在 Spring Boot 环境中设置 clamav 病毒扫描程序。因此,我想在属性文件 clamav.properties 中设置主机和端口,该文件与 application.properties 文件一起位于我的资源目录中。它看起来像这样:

clamav.host=localhost
clamav.port=3310
clamav.timeout=1000

我有这门课:

@ConfigurationProperties("clamav.properties")
public class ClamAvClient {

static final Logger logger = LoggerFactory.getLogger(ClamAvClient.class);

@Value("${clamav.host}")
private String clamHost;

@Value("${clamav.port}")
private int clamPort;

@Value("${clamav.timeout}")
private int clamTimeout;

 public boolean ping() throws IOException {
     logger.debug("Host:"+clamHost+" Port:"+clamPort);
     blah.....
 }

private static byte[] asBytes(String s) {
    return s.getBytes(StandardCharsets.US_ASCII);
}   

public String getClamHost() {
    return clamHost;
}

public void setClamHost(String clamHost) {
    this.clamHost = clamHost;
}

public int getClamPort() {
    return clamPort;
}

public void setClamPort(int clamPort) {
    this.clamPort = clamPort;
}

public int getClamTimeout() {
    return clamTimeout;
}

public void setClamTimeout(int clamTimeout) {
    this.clamTimeout = clamTimeout;
}

}

它没有连接,在日志中我得到这个:

2017-09-23 20:39:45.947 DEBUG 28857 --- [http-nio-8080-exec-2] xxx.ClamAvClient  : Host:null Port:0

所以这些值显然没有被设置。我究竟做错了什么?我正在使用 spring-boot-starter-web 的托管版本,我的 Eclipse 说它是 1.4.3-RELEASE

有什么想法吗?

最佳答案

使用@ConfigurationProperties将属性组映射到使用配置处理器的类。

@ConfigurationProperties中使用@Value看起来不正确。

将属性映射到类所需的只是:

@Configuration
@ConfigurationProperties(prefix="clamav")
public class ClamAvClient {

static final Logger logger = LoggerFactory.getLogger(ClamAvClient.class);


private String host;


private int port;


private int timeout;

//getters and setters

}

prefix ="clamav" 与属性文件中的前缀匹配。

host,port,timeout 与类的属性匹配。

关于java - Spring Boot 配置属性未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46385559/

相关文章:

java - JFace:Setgrayed 在树查看器中不起作用

java - 解析演示中存在大量空数据

spring - 如何查找 Redis 中可用的最大连接数以及使用了多少连接数和免费连接数?

spring - 如何使用 OAuth2 和 Mock 测试资源

java - CRUDRepository 中的 Update 或 saveorUpdate

java - while 循环出错。它不会阻止 Java

java - Java 中的内部类覆盖率

java - Spring MVC Controller 中如何根据特定条件显示不同的JSP页面?

java - Mockito + Spring + @PostConstruct,mock初始化错误,为什么调用@PostConstruct?

java - 获取Spring boot中当前代理的引用