springboot配置变更监听

本文讲述了Spring应用如何通过EnvironmentChangeEvent处理配置更改,以及DemoController中的控制器如何利用@Autowired和EventListener实现自动刷新和日志输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置变更监听

EnvironmentChangeEvent 是 Spring Framework 中的一个事件类型,用于表示环境变更的事件。

在 Spring 应用程序中,Environment 是负责管理配置属性的中心组件。当应用程序的配置属性发生变化时,Spring 会触发 EnvironmentChangeEvent 事件,以通知相关的监听器进行相应的处理。

EnvironmentChangeEvent 提供了一种机制,使应用程序能够响应配置属性的变化,并采取适当的行动。例如,您可以编写一个监听器来捕获 EnvironmentChangeEvent,并在配置属性发生变化时执行特定的逻辑,例如重新加载配置或重新初始化相关的组件。

@RestController
public class DemoController {

    @Autowired
    private ContextRefresher contextRefresher;

    @Autowired
    private BizConfig bizConfig;

    @Autowired
    private ValueConfig valueConfig;

    @Value("${rest.uuid}")
    private String uuid;

    @GetMapping(path = "/show")
    public String show() {
        JSONObject res = new JSONObject();
        res.put("biz", JSONObject.toJSONString(bizConfig));
        res.put("uuid", valueConfig.getUuid());
        res.put("no-refresh", uuid);
        return res.toJSONString();
    }

    @GetMapping(path = "/refresh")
    public String refresh() {
        new Thread(() -> contextRefresher.refresh()).start();
        return show();
    }

    @EventListener
    public void envListener(EnvironmentChangeEvent event) {
        System.out.println("conf change: " + event);
    }
}

在配置属性发生变化时控制台打印如下:
conf change: org.springframework.cloud.context.environment.EnvironmentChangeEvent[source=org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4b2b04b7, started on Sun Dec 17 16:47:59 CST 2023]

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值