SpringCloud项目中使用携程Apollo分布式配置中心

简介: SpringCloud项目中使用携程Apollo分布式配置中心


image.png

管理后台 http://localhost:8070


image.png

注册中心 http://localhost:8080


image.png

# 与SpringCloud/SpringBoot集成



  • 在apollo管理后台新建项目


image.png

添加配置


image.png


  • 添加依赖

<dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-client</artifactId>
                <version>1.1.0</version>
            </dependency>
  • SpringBoot项目配置

spring:
  application:
    name: biz-user
app:
  id: ${spring.application.name}    # 与apollo管理后台配置的项目的appId一致
apollo:
  meta: http://localhost:8080
  bootstrap:
    enabled: true          # 是否启用apollo
    namespaces: application,TEST1.base   # 该app(appId)下的某个命名空间(某个配置文件)/或者x.y(x部门下的公开y命名空间)
  • apollo.bootstrap可以使用注解的方式进行配置

@EnableApolloConfig({"application", "TEST1.base"})


  • 公共配置文件

image.png


先创建一个普通项目,再在项目中添加Namespace


image.png

  • 注意看提示和备注
  • 测试

@Slf4j
@EnableApolloConfig({"application", "TEST1.base"})
@MapperScan({"com.futao.biz.user.dao", "com.futao.biz.user.mapper"})
@SpringBootApplication(scanBasePackages = {"com.futao.common", "com.futao.biz.user"})
public class UserApplication implements CommandLineRunner {
    @Value("${app.apollo.username}")
    private String userName;
    @Value("${app.apollo.age}")
    private int age;
    @Value("${apl.conf1}")
    private String c1;
    @Value("${apl.conf2}")
    private String c2;
    @Value("${apl.conf3}")
    private String c3;
    @Value("${apl.conf4}")
    private String c4;
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }
    @Override
    public void run(String... args) throws Exception {
        new Thread(() -> {
            while (true) {
                log.info(StringUtils.repeat("-", 50));
                log.info("userName:{}", userName);
                log.info("age:{}", age);
                log.info("c1:{}", c1);
                log.info("c2:{}", c2);
                log.info("c3:{}", c3);
                log.info("c4:{}", c4);
                try {
                    Thread.sleep(2000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}


image.png

注意:


  • 项目中配置的application命名空间默认读取的是该appId下的application命名空间(并且是私有的命名空间),一般如果要读取公共的配置文件,格式是xxx.yyy,xxx为部门名称,yyy为公共的命名空间
  • apollo中配置的属性并不需要在配置文件中先定义好。(可以只在apollo中配置即可)
  • 配置文件的优先级为引用顺序递减
  • @EnableApolloConfig({"application", "TEST1.base"})=>TEST1.base中的配置无法覆盖application中的配置。
  • @EnableApolloConfig({"TEST1.base","application"})=>application中的配置无法覆盖TEST1.base中的配置。
目录
打赏
0
0
0
0
0
分享
相关文章
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
37 18
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
29 16
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
微服务SpringCloud分布式事务之Seata
SpringCloud+SpringCloudAlibaba的Seata实现分布式事务,步骤超详细,附带视频教程
78 1
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
283 1
Springcloud Alibaba + jdk17+nacos 项目实践
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
96 0
面试官:项目中如何实现分布式锁?
面试官:项目中如何实现分布式锁?
130 6
面试官:项目中如何实现分布式锁?
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
SpringCloud基础6——分布式事务,Seata
分布式事务、ACID原则、CAP定理、Seata、Seata的四种分布式方案:XA、AT、TCC、SAGA模式
SpringCloud基础6——分布式事务,Seata