使用Spring转换服务将字符串值从属性文件自动转换为其他数据类型,如持续时间,可以通过以下步骤实现:
@ConfigurationProperties
注解将属性文件中的值映射到配置类的属性上。@Configuration
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfig {
private Duration duration;
public Duration getDuration() {
return duration;
}
public void setDuration(Duration duration) {
this.duration = duration;
}
}
Converter<String, Duration>
接口的转换器类。@Component
public class StringToDurationConverter implements Converter<String, Duration> {
@Override
public Duration convert(String source) {
return Duration.parse(source);
}
}
@Configuration
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfig {
// ...
@Bean
public ConversionService conversionService() {
DefaultConversionService conversionService = new DefaultConversionService();
conversionService.addConverter(new StringToDurationConverter());
return conversionService;
}
}
@Service
public class MyService {
private final Duration duration;
public MyService(MyAppConfig appConfig) {
this.duration = appConfig.getDuration();
}
public void doSomething() {
// 使用持续时间属性
System.out.println("Duration: " + duration);
}
}
通过以上步骤,就可以使用Spring转换服务将属性文件中的字符串值自动转换为持续时间类型。在配置类中注册自定义的转换器,并在需要使用属性的地方注入配置类即可。
领取专属 10元无门槛券
手把手带您无忧上云