Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Apollo 怎样接入 Spring 和 Spring Boot?

查看完整题解

参考回答

直接回答

Apollo 把值交给 Spring 的属性来源,应用可以通过 Environment 或常见的属性注入读取。可按项目形态用 @EnableApolloConfig、早期引导集成,或 Config Data 模块。

讲清原理

关键是在这些组件初始化之前,把启动所需配置交给 Spring。Java SDK 支持监听和部分属性注入更新。自定义 Bean 或 @ConfigurationProperties 是否会按预期重绑,要针对装配和刷新方式验证。Apollo Java 2.5.0 的发布说明列出 Boot 4.0 支持。

例子与易错点

只想验证 Java SDK 时,可以在 JDK 21 下用 com.ctrip.framework.apollo:apollo-client:2.5.0 及其运行依赖运行以下类。在测试 Apollo 的默认命名空间发布 request.timeout=500。启动时用 -Dapp.id=interviews058 指定应用,并为 apollo.config-service 指定可达的测试地址。

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;

public class ReadConfig {
    public static void main(String[] args) {
        Config config = ConfigService.getAppConfig();
        int timeout = config.getIntProperty("request.timeout", 300);
        System.out.println("timeout=" + timeout);
    }
}

读取到测试发布后,输出 timeout=500。读取不到此键,或者它无法转成整数时,getIntProperty 会采用这里配置的默认值 300。

把读取下游超时的代码写成读当前值,或者在监听器中替换受控设置。若该值已经被复制进一个长期复用的客户端对象,就要处理那个对象的生命周期。

延伸阅读 Apollo 怎样让应用接到最新配置? · Apollo 和 Spring Cloud Config 怎么选? · 多数据源应用怎样用 Apollo 管理配置?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。