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类型的实例变量,其键为字符串,值为嵌套类。进行了一些其他编辑。希望这更清楚。