Recently, in a project that is using spring-framework (no spring-boot), I saw a @Configuration class with
a lot of configuration about timeouts injected as plain long (most likely milliseconds but it is not explicitly documented, as often it happens):
@Value("${connect.timeout}")
long connectTimeout;
With this small patch, it would be possible to directly inject a Duration:
@Value("${connect.timeout}")
Duration connectTimeout;
In my opinion, this is less error prone, as usually these configuration values must be adjusted with some calculations (i.e. seconds to milliseconds).
This patch allows two formats:
- ISO 8601 format with PT prefix, e.g. PT10s, PT1m30s (as Duration.parse);
- simplified format without PT prefix, e.g. 10s, 1m, 2h (IMHO this format is very readable for properties files).
Comments and feedback is welcome. I'm not sure about using a property editor, perhaps a Converter is a better choice?
And I'm not sure if this should be mentioned somewhere in the spring-reference... please advice :-)
Comment From: pivotal-cla
@dfa1 Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.
Comment From: pivotal-cla
@dfa1 Thank you for signing the Contributor License Agreement!
Comment From: pivotal-cla
@dfa1 Thank you for signing the Contributor License Agreement!
Comment From: dfa1
@rstoyanchev just reworked a bit the commit, can you please have a look?
Comment From: snicoll
@dfa1 thaks for the PR and sorry for the delay. We've been working on an extensive review of duration support in #30396. I unfortunately am going to close this PR in favor of ours.
Comment From: dfa1
@snicoll no worries... the new PR is much better and complete! 😇
thanks!