Java 未设置Spring启动配置属性

Java 未设置Spring启动配置属性,java,spring,spring-boot,properties,Java,Spring,Spring Boot,Properties,我正在尝试在Spring Boot环境中设置clamav病毒扫描程序。因此,我想在属性文件clamav.properties中设置主机和端口,该文件与application.properties文件一起位于我的resources目录中。看起来是这样的: clamav.host=localhost clamav.port=3310 clamav.timeout=1000 我有这门课: @ConfigurationProperties("clamav.properties") public cla

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

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
因此,这些值显然没有设定。我做错了什么?我使用的是SpringBootStarterWeb的托管版本,我的Eclipse说是1.4.3版本


有什么想法吗?

使用
@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”
与属性文件中的前缀匹配


主机、端口、超时
与类的属性匹配。

使用
@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”
与属性文件中的前缀匹配


主机、端口、超时
与类的属性匹配。

您如何使用ping?您使用的是
@Autowired
版本还是类似的
新ClamAvClient().ping()
?DOH!!!我正在使用新的ClamAvClient(),这可能就是问题所在。是的,您应该使用带有
applicationContext.getBean()的自动连线版本
@Autowired
注释。刚刚测试了您提供的代码,它使用@ConfigurationProperties(“clamav”)运行良好,请参阅,您是如何使用ping的?您使用的是
@Autowired
版本还是类似的
新ClamAvClient().ping()
?DOH!!!我正在使用新的ClamAvClient(),这可能就是问题所在。是的,您应该使用带有
applicationContext.getBean()的自动连线版本
@Autowired
注释。刚刚测试了您提供的代码,它使用@ConfigurationProperties(“clamav”)运行良好,我不得不将clamav.properties中的属性添加到application.properties中,但它成功了。您仍然可以使用@PropertySource将其分离,以加载您的外部属性Hanks buddy,到目前为止还没有遇到这个问题,但是有了一种新的读取值的方法:)GBI必须将clamav.properties中的属性添加到application.properties中,但它成功了。您仍然可以使用@PropertySource将其分离,以加载您的外部属性Hanks buddy,到目前为止还没有遇到这个问题,但有了一种读取值的新方法:)GB