我有一个配置参数“myconfig.defaultSize”,其值在application.properties文件中定义为例如“10MB”。
另一方面,我有一个@Component类,其中@ConfigurationProperties注释映射了这些配置参数,如下所示。
@Component
@ConfigurationProperties(prefix="myconfig")
public class StorageServiceProperties {
private Long defaultSize;
//...getters and setters
}
那么,我怎样才能应用一个方法将String值转换为Long?
答案 0 :(得分:1)
您不能在属性到属性的基础上应用此类通用转换器。您可以将String中的转换器注册到Long,但是会为每个这样的情况调用它(基本上是Long类型的任何属性)。
@ConfigurationProperties
的目的是将Environment
映射到更高级别的数据结构。也许你可以那样做?
@ConfigurationProperties(prefix="myconfig")
public class StorageServiceProperties {
private String defaultSize;
// getters and setters
public Long determineDefaultSizeInBytes() {
// parsing logic
}
}
如果你看一下Spring Boot中的multipart支持,我们keep the String value and we use the @ConfigurationProperties
object创建一个负责解析的MultipartConfigElement
。这样,您就可以在代码和配置中指定这些特殊值。
答案 1 :(得分:-1)
public void setDefaultSize(String defaultSize) {
try {
this.defaultSize = Long.valueOf(defaultSize);
} catch (NumberFormatException e) {
// handle the exception however you like
}
}