我有以下属性application.properties
文件:
mapper.url1=C:\\Program Files\\Java\\jdk1.8.0_111\\bin\\java.exe
mapper.url2=C:\\Program Files\\Java\\jdk1.8.0_111\\bin\\javaw.exe
以及bean,java代码中的反射:
@Component
@EnableConfigurationProperties
@ConfigurationProperties
public class ApplicationProperties {
private Map<String, String> mapper;
//get and set methods
....
现在我想扩展这种格式并为密钥添加超时。
我希望最可读(我不坚持,你可以建议另一种)格式是:
mapper.url1=C:\\Program Files\\Java\\jdk1.8.0_111\\bin\\java.exe
mapper.url1.timeOut=1000
如何扩展我的配置以读取此(或其他具有相同功率)格式?
验证它的正确位置在哪里? 我想验证属性文件格式。每个密钥都应包含:path和timeout。否则不应该启动应用程序
答案 0 :(得分:0)
使用嵌套类来表示属性。
例如:
@ConfigurationProperties
public class DemoApplication {
...
public static class UrlProperties {
// use Path or File so it's type-safe
private Path path;
// use int for type-safety
private int timeout;
public Path getPath() {
return path;
}
public void setPath(final Path path) {
this.path = path;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(final int timeout) {
this.timeout = timeout;
}
@Override
public String toString() {
return "UrlProperties{" + "path=" + path + ", timeout=" + timeout + '}';
}
}
}
然后使用Map
键和值作为嵌套类类型定义String
实例变量:
private Map<String, UrlProperties> mapper;
并使用以下属性:
mapper.url1.path=C:\\Program Files\\Java\\jdk1.8.0_111\\bin\\java.exe
mapper.url1.timeout=1000
mapper.url2.path=C:\\Program Files\\Java\\jdk1.8.0_111\\bin\\javaw.exe
mapper.url2.timeout=5000
你最终得到的内容如下:
{url2=UrlProperties{path=C:\Program Files\Java\jdk1.8.0_111\bin\javaw.exe, timeout=5000}, url1=UrlProperties{path=C:\Program Files\Java\jdk1.8.0_111\bin\java.exe, timeout=1000}}
此外,使用Spring Boot 1.5,您可以使用JSR-303注释来验证您的ConfigurationProperties
。有关详细信息,请参阅here。