• springboot 集成 Apollo 动态获取配置文件的方法


    如果你要自己搭建Apollo环境的话参考: 

    https://blog.csdn.net/qq_38983728/article/details/90108387

    https://www.bilibili.com/video/BV1qt4117789

    我是懒得搞,公司有现成的,下面说说咋集成使用

    maven依赖

    <dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-client</artifactId>
                <version>1.1.2</version>
    </dependency>

    application.yml

    app:
      id: edu_xxx_service
    apollo:
      bootstrap:
        enabled: true
        namespaces: application,application-volatile         //获取对应命名空间的配置
      meta: 'http://0000000'      //Apollo地址服务地址
      
    //app.id:在配置中心配置的应用身份信息。
    //apollo.bootstrap.enabled:在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息。
    //apollo.bootstrap.eagerLoad.enabled:将Apollo配置加载提到初始化日志系统之前。
    //apollo.bootstrap.namespaces:配置的命名空间,多个逗号分隔,一个namespace相当于一个配置文件。

     

    control层

    package com.nnn.apollo.control;
    
    import com.nnn.apollo.ent.ValueStyleProperty;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.LinkedHashMap;
    import java.util.Map;
    
    @RestController
    @RequestMapping("/value-style")
    public class ValuePropertyController {
    
        @Autowired
        private ValueStyleProperty keyProperty;
    
        @Value("${server.port:123}")            ---取的是配置文件 ,如果没有填入123 的写法
        private String port;
    
        @Value("${apollo.bootstrap.namespaces}")  ---取的是配置文件              
        private String namespaces;
    
        @GetMapping("/get")
        public Map<String, Object> getProperty() {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("port", port);
            map.put("namespaces", namespaces);                  ----获取启动时获取哪些应用的配置
            map.put("topic.name", keyProperty.getDemoKey1());   ----获取配置文件name对应的值
            return map;
        }
    
    }

    实体类

    ValueStyleProperty

    package com.nnn.apollo.ent;
    
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component
    @Data
    //其实就是搞个实体类 取配置文件里面的值 赋值过来而已
    public class ValueStyleProperty {
    
        @Value("${topic.name}") 
        private String demoKey1;
    }

    启动类

    package com;
    
    import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    
    @SpringBootApplication
    //在微服务应用启动中使用apollo配置中心获取配置信息
    @EnableApolloConfig
    @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
    public class SecurityApplication {
        public static void main(String[] args) {
            SpringApplication.run(SecurityApplication.class, args);
        }
    
    }

    其实阿,apollo用这个,当在apollo修改配置后,客户端已编译在跑的项目的配置文件 就会同步修改,那么项目就不用重启啦。

    查看从apollo拉取回来的配置文件 可以找以下位置查看

    然后拉取来的配置文件信息会覆盖本地的配置文件信息,当然apollo里面没有的就用原来本地的

  • 相关阅读:
    室内设计师招募中...
    winform控件部署于web中控件装载ie中
    Oracle10g在windows2003下双机热备安装
    购房风波(4)不了了之
    [原创]面向对象理解·抽象类和派生类理解和使用
    Infragistics NetAdvantage 2006 Volume 2 CLR 2.0曲折安装
    两个Javascript小tip
    PHP学习笔记之二
    C#开发语音机项目
    关于WebBrowser的DocumentText
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/16093660.html
Copyright © 2020-2023  润新知