Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从地图上读取复杂的spring配置?_Java_Spring_Spring Boot_Configuration - Fatal编程技术网

Java 如何从地图上读取复杂的spring配置?

Java 如何从地图上读取复杂的spring配置?,java,spring,spring-boot,configuration,Java,Spring,Spring Boot,Configuration,我有以下属性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 @ConfigurationProper

我有以下属性
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
    ....
如何扩展我的配置以读取此(或具有相同电源的其他)格式

正确的验证位置在哪里?

我想验证属性文件格式。每个键都应该包含路径和超时。否则不应启动应用程序

使用嵌套类来表示属性

例如:

@ConfigurationProperties
公共类演示应用程序{
...
公共静态类URL属性{
//使用路径或文件以确保其类型安全
专用路径;
//使用int进行类型安全
私有int超时;
公共路径getPath(){
返回路径;
}
公共无效设置路径(最终路径){
this.path=path;
}
公共int getTimeout(){
返回超时;
}
公共无效设置超时(最终整数超时){
this.timeout=超时;
}
@凌驾
公共字符串toString(){
返回“UrlProperties{”+“path=“+path+”,timeout=“+timeout+'}”;
}
}
}
然后使用
String
键和值定义
Map
实例变量作为嵌套类类型:

私有地图映射器

并使用如下属性:

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}}
最终将得到如下所示的对象:

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}}

此外,使用SpringBoot1.5,您可以使用JSR-303注释来验证
ConfigurationProperties
。有关更多详细信息,请参见。

您在示例中将map定义为字段(不是内部类)。对,mapper是map类型的实例变量,其键为字符串,值为嵌套类。进行了一些其他编辑。希望这更清楚。