未设置弹簧引导配置属性
我试图在Spring引导环境中设置clamav病毒扫描程序。所以我想在一个属性文件clamav.properties中设置主机和端口,这个文件位于我的resources目录以及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
匹配该类的属性。
我不得不将clamav.properties中的属性添加到application.properties中,但是它的工作原理。 – mmaceachran
你仍然可以使用@PropertySource分开它来加载你的外部属性 – Barath
感谢兄弟,迄今为止没有遇到这个问题,但有一个新的方法来读取值:) GB –
以及你如何使用ping?你使用'@ Autowired'版本还是像'new ClamAvClient()。ping()'? – varren
DOH !!!我正在使用新的ClamAvClient()这可能是问题。 – mmaceachran
是啊,你应该使用带'applicationContext.getBean();'或'@ Autowired'注解的自动装版。刚刚测试过您提供的代码,并且它工作正常 – varren