SpringBoot中如何加载远程配置

本文章将通过结合consul config来讲解在springboot中如何加载远程配置:通过consul config加载consul server中存储的配置。

我们先来说下在spring中常规的加载配置文件的方式。

加载配置文件方式

对于一个工程来说,我们一般都会需要有各种配置,在spring工程里面,一般都是yml或者properties文件,如下所示:

server:
  port: 9991 # 端口


spring:
  application:
    name: ts-service1 # 应用名称
  profiles:
    active: dev # 指定环境,默认加载 default 环境
  cloud:
    consul:
      # Consul 服务器地址
      host: 51.6.196.200
      port: 8500
      # 配置中心相关配置
      config:
        # 是否启用配置中心,默认值 true 开启
        enabled: true
        # 设置配置的基本文件夹,默认值 config 可以理解为配置文件所在的最外层文件夹
        prefix: config
        # 设置应用的文件夹名称,默认值 application 一般建议设置为微服务应用名称
        default-context: tsService
        # 配置环境分隔符,默认值 "," 和 default-context 配置项搭配
        # 例如应用 orderService 分别有环境 default、dev、test、prod
        # 只需在 config 文件夹下创建 orderService、orderService-dev、orderService-test、orderService-prod 文件夹即可
        profile-separator: '-'
        # 指定配置格式为 yaml
        format: YAML
        # Consul 的 Key/Values 中的 Key,Value 对应整个配置文件
        data-key: redisConfig
        # 以上配置可以理解为:加载 config/orderService/ 文件夹下 Key 为 orderServiceConfig 的 Value 对应的配置信息
        watch:
          # 是否开启自动刷新,默认值 true 开启
          enabled: true
          # 刷新频率,单位:毫秒,默认值 1000
          delay: 1000
      # 服务发现相关配置
      discovery:
        register: true                                # 是否需要注册
        instance-id: ${spring.application.name}-01    # 注册实例 id(必须唯一)
        service-name: ${spring.application.name}      # 服务名称
        port: ${server.port}                          # 服务端口
        prefer-ip-address: true                       # 是否使用 ip 地址注册
        ip-address: ${spring.cloud.client.ip-address} # 服务请求 ip

那么对于读取这些配置文件中的值,一般有如下几种方式

  • 1、使用 @Value("${property}") 读取比较简单的配置信息。

  • 2、通过@ConfigurationProperties读取并通过@Component与 bean 绑定

  • 3、通过@ConfigurationProperties读取并在使用的地方使用@EnableConfigurationProperties注册需要的配置 bean

  • 4、通过@PropertySource读取指定 properties 文件

注:spring加载配置文件有个默认的加载顺序的,根据存放的路径来决定。

拉取远程配置

我们知道,上面说的那些一般要求配置都必须是本地,而且格式只能是 properties(或者 yaml)。那么,如果我们有远程配置,如何把他引入进来来呢。主要有以下三步:

  • 1、编写PropertySource:编写一个类继承EnumerablePropertySource,然后实现它的抽象方法即可。

  • 2、编写PropertySourceLocator:PropertySourceLocator 其实就是用来定位我们前面的PropertySource,需要重写的方法只有一个,就是返回一个PropertySource对象。

  • 3、配置PropertySourceLocator生效

下面就以consul为例,剖析下它是怎么做的

consul的配置示例如下:

spring:
  app
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot实现远程jar的热,可以通过使用Spring Boot Remote Devtools插件来实现。该插件提供了一种方便的方式,可以在开发环境将项目的jar包部署到远程服务器上,并且可以在本地对jar包进行修改后立即生效,无需重新部署整个应用。 首先,在项目的pom.xml文件以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> ``` 在项目的配置文件application.properties以下配置: ``` spring.devtools.remote.secret=your-secret-key spring.devtools.remote.server.url=http://your-server-url:8080 ``` 其,your-secret-key为一个密钥,用于验证本地和远程服务器的身份;your-server-url为远程服务器的地址。 然后,在本地进行修改后,可以使用以下方式进行热: 1. 在IDE选择"Build -> Build Project"来重新编译项目; 2. 使用以下命令来重新打包项目:`mvn package -DskipTests`; 3. 将生成的jar包上传到远程服务器; 4. 在远程服务器上执行以下命令来重启应用:`java -jar your-jar-file.jar` 通过以上步骤,可以实现远程jar的热。每次在本地修改后,只需重新打包并将jar包上传到远程服务器上,然后在远程服务器上重新启动应用,修改的内容就会立即生效。 需要注意的是,为了确保安全性,建议将密钥配置文件和远程服务器地址等敏感信息进行密或使用安全传输方式进行传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值