---
# System prepended metadata

title: Properties conversion in Spring Boot
tags: [spring]

---

# Properties conversion in Spring Boot

###### tags: `spring`

## Converting durations

To specify a session timeout of 30 seconds, 30, `PT30S` and `30s` are all equivalent.  A read timeout of 500ms can be specified in any of the following form: `500`, `PT0.5S` and `500ms`.

You can also use any of the supported units.  These are:

`ns` for nanoseconds
`us` for microseconds
`ms` for milliseconds
`s` for seconds
`m` for minutes
`h` for hours
`d` for days

The default unit is milliseconds and can be overridden using `@DurationUnit` as illustrated in the sample above.

### Reference

* [Spring Boot Reference Documentation &#187; 2.7.8. Properties Conversion](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-conversion-duration "Converting durations")

## Converting periods

In addition to durations, Spring Boot can also work with `java.time.Period` type.  The following formats can be used in application properties:

An regular int representation (using days as the default unit unless a `@PeriodUnit` has been specified).

The standard ISO-8601 format used by `java.time.Period`.

A simpler format where the value and the unit pairs are coupled (e.g. `1y3d` means 1 year and 3 days).

The following units are supported with the simple format:

* `y` for years
* `m` for months
* `w` for weeks
* `d` for days

### Reference

* [Spring Boot Reference Documentation &#187; 2.7.8. Properties Conversion](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-conversion-period "Converting periods")

## Converting Data Sizes

Spring Framework has a DataSize value type that expresses a size in bytes.  If you expose a DataSize property, the following formats in application properties are available:

A regular `long` representation (using bytes as the default unit unless a `@DataSizeUnit` has been specified)

A more readable format where the value and the unit are coupled (e.g. `10MB` means 10 megabytes).

To specify a buffer size of 10 megabytes, `10` and `10MB` are equivalent.  A size threshold of 256 bytes can be specified as `256` or `256B`.

You can also use any of the supported units.  These are:

* `B` for bytes
* `KB` for kilobytes
* `MB` for megabytes
* `GB` for gigabytes
* `TB` for terabytes

The default unit is bytes and can be overridden using `@DataSizeUnit` as illustrated in the sample above.

### Reference

* [Spring Boot Reference Documentation &#187; 2.7.8. Properties Conversion](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-conversion-datasize "Converting Data Sizes")