Java-118-SpringCloud-8-config

简介: 在传统项目中,配置信息一般都在配置文件(application.properties)、操作系统变量、jar命令启动时的环境变量参数,如果需要更改配置就需要重新构建项目再发布。并且如数据库连接信息等安全性也有风险。所以Spring Cloud 提供了Spring Cloud Config来进行集中式配置管理。

在传统项目中,配置信息一般都在配置文件(application.properties)、操作系统变量、jar命令启动时的环境变量参数,如果需要更改配置就需要重新构建项目再发布。并且如数据库连接信息等安全性也有风险。所以Spring Cloud 提供了Spring Cloud Config来进行集中式配置管理。

Spring Cloud Config分为Server端和Client端:

Spring Cloud Config Server是Spring Cloud为指定应用中所有服务提供集中式配置的一个服务,实现集中管理所有应用的配置,避免重复配置。

Spring Cloud Config Client可以通过配置获取到Server中的配置信息。


       Spring Cloud Config支持git存储配置文件,也支持本地存储。

       下面建立一个本地存储的例子试试。

一、通过Spring Cloud Config Server 获取到本地配置

1.pom.xml

<dependencies>

 <!--web 组件 -->

 <dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-web</artifactId>

 </dependency>

 <!-- eureka client 组件-->

 <dependency>

     <groupId>org.springframework.cloud</groupId>

     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

 </dependency>

 <dependency>

     <groupId>org.springframework.cloud</groupId>

     <artifactId>spring-cloud-config-server</artifactId>

 </dependency>

</dependencies>

2.启动类中使用@EnableConfigServer注解启用配置服务

package com.xing.study.cloud.config;


import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.config.server.EnableConfigServer;



/**

* @author rt

*/

@SpringBootApplication

@EnableConfigServer

public class ConfigServerApplication {

   public static void main(String[] args) {

       SpringApplication.run(ConfigServerApplication.class, args);

   }

}

3.配置文件application.properties

spring.application.name=config-server

server.port=8889


# 注册到eureka

eureka.instance.instance-id=config-server

eureka.client.service-url.defaultZone=http://172.23.13.15:8881/eureka/

eureka.client.register-with-eureka=true

eureka.client.fetch-registry=true


##配置文件存Git

#spring.cloud.config.server.git.uri=http://github/xh/config.git

#spring.cloud.config.label=master

#spring.cloud.config.server.git.search-paths=/**

#spring.cloud.config.server.git.username=username

#spring.cloud.config.server.git.password=password


#配置文件存本地

#注意:文件夹要有访问权限

spring.profiles.active=native

spring.cloud.config.server.native.search-locations=D:/temp


        可以注册到eureka来实现配置动态刷新。最好是用git的方式来试试。

4.配置文件指向的D:/temp,在这里放配置文件

图片

       里面就放了一个配置:token=mi

这里的命名要和后面访问时的匹配。

application指应用名称,我们的配置文件名称应按照application-{profile}.yml命名。

profile指环境信息,比如生产环境【prod】、开发环境【dev】、测试环境【test】

label指git分支,比如master

5.访问测试

访问格式:

/{application}/{profile}[/{label}]

/{application}-{profile}.yml

/{label}/{application}-{profile}.yml

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

结果:

图片


二、通过Spring Cloud Config Client获取到server的配置

1.pom依赖

<dependencies>

   <!--web 组件 -->

   <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-web</artifactId>

   </dependency>

   <dependency>

       <groupId>org.springframework.cloud</groupId>

       <artifactId>spring-cloud-starter-config</artifactId>

   </dependency>

</dependencies>

2.配置bootstrap.yml:

# 使用config server中的配置

spring:

 cloud:

   config:

     uri: http://localhost:8889 # 如果注册到eureka,可以直接配置Config Server服务名 比如config-server

     label: master

     profile: active

     fail-fast: true

图片


3.输出配置

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;


/**

* @author rt

*/

@RestController

public class TokenController {

   @Value("${token}")

   private String token;


   @RequestMapping("/token")

   public String token() {

       return token;

   }

}

4.公司有网控,上不去git,所以我没有使用git来测试。。。了解了就是啦


       配置和应用进行隔离,提升了安全性,也避免了重复配置。


END

目录
相关文章
|
6月前
|
SQL 移动开发 前端开发
ruoyi-nbcio从spring2.7.18升级springboot到3.1.7,java从java8升级到17(一)
ruoyi-nbcio从spring2.7.18升级springboot到3.1.7,java从java8升级到17(一)
184 0
|
3月前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
|
5月前
|
存储 消息中间件 Java
Java一分钟之-Spring Cloud Config:外部化配置
【6月更文挑战第8天】Spring Cloud Config提供外部化配置,通过Config Server管理和版本控制微服务配置。本文涵盖Config Server与Client的配置、常见错误、多环境配置、实时更新及使用示例。注意配置服务器URL、环境变量设置、Bus配置以及安全问题。使用Config能提升系统灵活性和可维护性,但要留意日志以确保配置正确和安全。
146 10
|
6月前
|
移动开发 前端开发 NoSQL
ruoyi-nbcio从spring2.7.18升级springboot到3.1.7,java从java8升级到17(二)
ruoyi-nbcio从spring2.7.18升级springboot到3.1.7,java从java8升级到17(二)
316 0
|
6月前
|
XML 前端开发 Java
SpringMVC中那些Java Config
SpringMVC中那些Java Config
101 0
Java:Springboot的service循环依赖问题
Java:Springboot的service循环依赖问题
166 0
|
负载均衡 Java Spring
Java--SpringCloud-7-Feign
Feign是一个声明式客户端,可以实现服务间的相互调用。 今天代码实现一下Spring Cloud项目中,使用Feign来实现类似于昨天Ribbon调用其他服务接口的效果。
123 0
Java--SpringCloud-7-Feign
|
XML JSON Java
Java--SpringBoot-29-WebService
在SpringBoot中发布WebService。
141 0
Java--SpringBoot-29-WebService
|
Java
Java--SpringBoot-32-SpringBoot Admin
今天来将client注册到Server服务,并在管理页面上查看各种信息。Client
102 0
Java--SpringBoot-32-SpringBoot Admin
|
监控 数据可视化 Java
Java--SpringBoot-31-SpringBoot Admin
Spring Boot中的监控和管理软件Spring Boot Admin.该软件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。
99 0
Java--SpringBoot-31-SpringBoot Admin