This project was an attempt to figure out an issue with using Spring Boot @ConfigurationProperties
with multi-value properties (Lists, Maps, etc.)
The unexpected behaviour observed was that when removing an item from the property and calling the /refresh
endpoint,
the value was not being removed.
Replacing or adding values worked fine.
The solution appears to be to explicitly set the @ConfigurationProperties
annotated class as:
@RefreshScope
@Component
@ConfigurationProperties
public class RefreshScopeConfigurationProperties {
}
Using this, you get an aspect-advised version of the class that supports full refresh.
This can be manually verified by uncommenting the top level application.yml
and starting the application.
The first call to /list
will return the properties.
If the values are then changed (e.g. item2 removed), and an empty body {}
is POSTed to /refresh
,
the next call to /list
will show the changed value.