1.说明

本文详细介绍Spring Cloud创建Config模块的方法,
基于已经创建好的Spring Cloud父工程,
请参考SpringCloud创建项目父工程,
创建Config模块这个子工程,
作为Spring Cloud的配置中心,
这个配置中心可以独立启动。
然后配合创建好的Eureka子工程,
请参考SpringCloud创建Eureka模块,
把Config服务注册到Eureka。

2.创建config模块

这一步创建一个Maven Module,
作为Spring Cloud的父工程下的一个子工程:
在父工程spring-cloud-demo上右键 -> New -> Other... -> Maven -> Maven Project

勾选Create a simple project(skip archetype selection),
输入Module Name:config-server,
查看Parent Project:spring-cloud-demo,
如果不是自己选择的父工程,请重新选择。

点击Finish完成工程创建。

3.添加依赖

在pom.xml中增加spring-cloud-config-server的依赖:

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>

4.新增配置文件

在src/main/resource目录下新增application.yml文件,
并且增加如下配置:

server:
port: 9009 spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/bugzeroman/spring-cloud-config.git

主要是配置中心需要使用到的git仓库,
这里使用https协议的git地址。
如果使用git协议的地址,
需要配置ssh的私钥privateKey,
同时strictHostKeyChecking要为false,
否则会报错"reject HostKey : gitee.com",
参考配置如下:

spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: git@gitee.com:bugzeroman/spring-cloud-config.git
strictHostKeyChecking: false
privateKey: |
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAuThLh+LHK0g7g/dJ4IUCyOYg7JNXQDGYt4khUYnJIw5pxX/a
... please input real id_rsa ...
UZp40gCDS64ve++Z/leNTMYH0YiAxNkcIp2Czvwm8P+hCkxvdgWgkbb5nuXfR1Gp
2OrvwOk/z076Wo3kTl0Oh+Tt9EB7bf1h2MC23QrRXUim8r0+Vjl3
-----END RSA PRIVATE KEY-----

5.新增主启动类

在src/main/java目录下新增主启动类,
Package:com.yuwen.spring.config
Name:ConfigApplication
然后修改ConfigApplication.java如下,
注意一定要有EnableConfigServer注解,
表示这是一个配置中心:

package com.yuwen.spring.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer; @SpringBootApplication
@EnableConfigServer
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}

6.git仓库

在上面我们指定了spring-cloud-config仓库的地址:

https://gitee.com/bugzeroman/spring-cloud-config.git
git@gitee.com:bugzeroman/spring-cloud-config.git

在这个仓库下面我们上传各种配置文件,
这样就可以通过配置中心config拉取到各种配置。
现在新增一个application.yml如下,
然后上传到仓库中即可。

spring:
profiles:
active:
- dev ---
# 开发环境
spring:
profiles: dev
application:
name: config-server-dev ---
# 测试环境
spring:
profiles: test
application:
name: config-server-test

7.启动config

右键主启动类ConfigApplication.java,
Run As ... -> Java Application
成功启动日志如下,
可以看到对外提供的服务端口是9009:

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE) 2020-09-09 15:53:28.680 INFO 19844 --- [ main] c.yuwen.spring.config.ConfigApplication : No active profile set, falling back to default profiles: default
2020-09-09 15:53:29.325 INFO 19844 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=1d5d8597-77d3-3e14-9239-79e89f24c7a4
2020-09-09 15:53:29.825 INFO 19844 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9009 (http)
2020-09-09 15:53:29.833 INFO 19844 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-09-09 15:53:29.833 INFO 19844 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.36]
2020-09-09 15:53:29.918 INFO 19844 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-09-09 15:53:29.918 INFO 19844 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1226 ms
2020-09-09 15:53:30.162 INFO 19844 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-09-09 15:53:31.160 INFO 19844 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
2020-09-09 15:53:31.201 INFO 19844 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9009 (http) with context path ''
2020-09-09 15:53:31.489 INFO 19844 --- [ main] c.yuwen.spring.config.ConfigApplication : Started ConfigApplication in 3.957 seconds (JVM running for 4.284)
2020-09-09 15:54:03.392 INFO 19844 --- [nio-9009-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-09-09 15:54:03.392 INFO 19844 --- [nio-9009-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-09-09 15:54:03.397 INFO 19844 --- [nio-9009-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 5 ms
2020-09-09 15:54:04.760 INFO 19844 --- [nio-9009-exec-1] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/C:/Users/yuwen/AppData/Local/Temp/config-repo-5990891065379764128/application.yml (document #0)

8.测试效果

在浏览器中输入如下URL,
分别对应不同的文本输出,
表名拉取到了仓库中对应的配置。

8.1.master下的application.yml

http://localhost:9009/master/application.yml

{
"name": "master",
"profiles": [
"application.yml"
],
"label": null,
"version": "c8a86decaab4b20d7470e09e6b9da50ed69d5d32",
"state": null,
"propertySources": [
{
"name": "https://gitee.com/bugzeroman/spring-cloud-config.git/application.yml (document #0)",
"source": {
"spring.profiles.active[0]": "dev"
}
}
]
}

8.2.开发环境

http://localhost:9009/master/application-dev.yml

spring:
application:
name: config-server-dev
profiles:
active:
- dev

8.3.测试环境

http://localhost:9009/master/application-test.yml

spring:
application:
name: config-server-test
profiles:
active:
- dev

9.Config服务注册到Eureka

请参考:SpringCloud创建Eureka Client服务注册

SpringCloud创建Config模块的更多相关文章

  1. SpringCloud创建Config读取本地配置

    1.说明 Config Server获取配置支持的方式很多, 包括Git仓库(github/gitee等),任何与JDBC兼容的数据库, Subversion,Hashicorp Vault,Cred ...

  2. SpringCloud创建Config Client配置读取

    1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置, 这里以创建Config Client服务为例, 基于已经创建好的Config Ser ...

  3. SpringCloud创建Eureka模块集群

    1.说明 本文详细介绍Spring Cloud创建Eureka模块集群的方法, 基于已经创建好的Spring Cloud Eureka Server模块, 请参考SpringCloud创建Eureka ...

  4. SpringCloud创建Gateway模块

    1.说明 本文详细介绍Spring Cloud创建Gateway模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 和已经创建好的Eureka ...

  5. SpringCloud创建Config Client通过Eureka访问Config

    1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置. 读取配置的方式有两种, 第一种是直接配置Configer Server的URL, 第 ...

  6. SpringCloud创建Eureka模块

    1.说明 本文详细介绍Spring Cloud创建Eureka模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 在里面创建Eureka模块, ...

  7. SpringCloud创建Config多客户端公共配置

    1.说明 基于已经创建好的Spring Cloud配置中心, 在配置中心仅保存一套配置文件, 多个客户端可以通过配置中心读取到相同的配置, 而不需要在每个客户端重复配置一遍, 下面以一个Config ...

  8. SpringCloud创建Eureka Client服务注册

    1.说明 本文详细介绍微服务注册到Eureka的方法, 即Eureka Client注册到Eureka Server, 这里用任意一个Spring Cloud服务为例, 比如下面已经创建好的Confi ...

  9. SpringCloud之Config

    1.背景 在前的学习中,我们几乎解决了springCloud的所有常规应用,但是大家有没有想过这样一个问题: 是使用微服务后,有非常多的application.yml文件,每个模块都有一个,实际开发中 ...

随机推荐

  1. spring定时任务执行两次

    最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...

  2. oracle 预安装命令

     yum install oracle-rdbms-server-11gR2-preinstall-1.0-6.el6 

  3. SQL模糊查询语句和Escape转义字符

    通配符描述示例%包含零个或更多字符的任意字符串.WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名._(下划线)任何单个字符.W ...

  4. 锁对象-条件对象-synchronized关键字

    1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.Lock; 3 import ja ...

  5. Oracle 学习PL/SQL

    先上一张实用的图:用于转义字符的. SQL> select chr(42) ||'is what?' from dual; CHR(42)||---------*is what? 想转义哪个就转 ...

  6. 基于阿里云 ecs 使用 docker 方式部署 showDoc

    官网文档:https://www.showdoc.cc/help?page_id=65610 (建议先看下这个) 首先说明一下,我 ecs 镜像是 CentOS 7.6 64位 1. 首先在 服务器上 ...

  7. 【Java基础】transient关键字

    1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过 ...

  8. mysq中char,varchar,text的区别

    mysql5.0.3以后,n都表示字符数(varchar(n)) 检索效率 char > varchar > text 当varchar长度超过255之后,跟text一致,但是设置varc ...

  9. Jedis操作五种不同的类型的数据

    package cn.hope.jedis.utils;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;im ...

  10. Snort 入侵检测系统

    Snort 入侵检测系统 一.实验目的 1.掌握snort IDS工作原理 2.应用snort 三种方式工作 二.实验环境 系统环境:Windows环境, kali环境 三.实验原理 1.snort ...