Reloading/Refreshing Spring configuration file without restarting the servlet container

For those stumbling on this more recently — the current and modern way to solve this problem is to use Spring Boot’s Cloud Config.

Just add the @RefreshScope annotation on your refreshable beans and @EnableConfigServer on your main/configuration.

So, for example, this Controller class:

@RefreshScope
@RestController
class MessageRestController {

    @Value("${message}")
    private String message;

    @RequestMapping("/message")
    String getMessage() {
        return this.message;
    }
}

Will return the new value of your message String property for the /message endpoint when refresh is invoked on Spring Boot Actuator (via HTTP endpoint or JMX).

See the official Spring Guide for Centralized Configuration example for more implementation details.

Leave a Comment