其他分享
首页 > 其他分享> > springboot 集成 Apollo 动态获取配置文件的方法

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里面没有的就用原来本地的

标签:Apollo,springboot,配置文件,springframework,org,import,apollo,com
来源: https://www.cnblogs.com/kaibindirver/p/16093660.html