美文网首页SpringBoot
Spring Boot配置动态刷新教程

Spring Boot配置动态刷新教程

作者: rowsy | 来源:发表于2017-03-16 11:26 被阅读0次

    Spring Boot Config为配置提供了集中化的管理,所以当配置改变的时候我们应该能够通知到所有的客户端,那么这是如何做到的呢

    Spring提供了@ConfigurationProperties注解,可以将配置属性映射到一个JavaBean
    而且Spring Boot为每个Client导出了一个/refresh的服务,每当调用这个服务的时候,被@ConfigurationProperties标注的Bean就会刷新属性值

    我们继续使用在http://www.jianshu.com/p/6a231e40a075http://www.jianshu.com/p/b7bcab472d1e中配置的项目

    下面我们把message提出成为一个JavaBean

    @ConfigurationProperties(prefix = "")
    @Configuration
    public class MessageConfig {
    
        private volatile String message;
    
        public String getMessage() {
    
            return message;
        }
    
        public void setMessage(String message) {
    
            this.message = message;
        }
    }
    

    @ConfigurationProperties注解可以配置前缀,如果message属性改为test.message@ConfigurationProperties注解就可以写为@ConfigurationProperties(prefix = "test")

    bootstrap.properties文件中增加一行配置

    management.security.enabled=false
    

    这行配置可以免去调用/refresh时的权限验证

    RonnieController改成下面这样

    @RestController
    class RonnieController {
    
        @Autowired
        MessageConfig messageConfig;
    
        @RequestMapping("/message")
        public String message() {
    
            return messageConfig.getMessage();
        }
    }
    

    重启服务,验证是否能正常执行,访问http://localhost:8080/message,如果返回I'm a king,则没有问题

    然后我们修改ronnie.properties文件,在king后面加上er,变为I'm a kinger,然后提交到git

    curl -X POST http://localhost:8080/refresh刷新配置,注意要用POST请求,刷新成功后,再次访问http://localhost:8080/message,此时返回I'm a kinger

    ok,配置完毕

    相关文章

      网友评论

        本文标题:Spring Boot配置动态刷新教程

        本文链接:https://www.haomeiwen.com/subject/zhndnttx.html