所有服务的配置文件归于中心仓库管理,spring cloud config 提供了将配置服务放在本地,也提供了远程仓库中,提供了两个角色,一是config server,二是config client
git
---->config 1,config 2,congfig3(可以看成一个仓库的不同分支,为不同服务提供定制的配置文件)
—>将config server注册在eureka中—>config client通过eureka的中地址获取仓库地址,连接上config server
server: port: 8090spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNullusername: rootpassword: 999521initialSize: 5minIdle: 1maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000jpa:database: mysqlshow-sql: truehibernate:ddl-auto: none
pom.xml
<project xmlns&#61;"http://maven.apache.org/POM/4.0.0" xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.2.4.RELEASEversion><relativePath/> parent><groupId>com.examplegroupId><artifactId>eurekazzartifactId><version>0.0.1-SNAPSHOTversion><name>eurekazzname><description>Demo project for Spring Bootdescription><properties><java.version>1.8java.version><spring-cloud.version>Hoxton.SR1spring-cloud.version>properties><dependencies><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope><exclusions><exclusion><groupId>org.junit.vintagegroupId><artifactId>junit-vintage-engineartifactId>exclusion>exclusions>dependency>dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-dependenciesartifactId><version>${spring-cloud.version}version><type>pomtype><scope>importscope>dependency>dependencies>dependencyManagement><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins>build>project>
application.yml
#设置tomcat服务端口号
server:port : 8761
spring:application:name: eurekazz
eureka:client:fetch-registry: false #自己就是注册中心&#xff0c;负责维护服务&#xff0c;不需要去检索服务register-with-eureka: false #不向注册中心注册自己
启动类
&#64;SpringBootApplication
&#64;EnableEurekaServer //开启eureka服务
public class EurekazzApplication {public static void main(String[] args) {SpringApplication.run(EurekazzApplication.class, args);}
}
当控制台出现如下提示&#xff0c;则可以打开http://localhost:8761/&#xff0c;就能看到eureka服务页面
<project xmlns&#61;"http://maven.apache.org/POM/4.0.0" xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.1.7.RELEASEversion><relativePath/> parent><groupId>com.examplegroupId><artifactId>configseverartifactId><version>0.0.1-SNAPSHOTversion><name>configsevername><description>Demo project for Spring Bootdescription><properties><java.version>1.8java.version><spring-cloud.version>Greenwich.SR2spring-cloud.version>properties><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starterartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope><exclusions><exclusion><groupId>org.junit.vintagegroupId><artifactId>junit-vintage-engineartifactId>exclusion>exclusions>dependency>
<dependency> <groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-eurekaartifactId>dependency><dependency> <groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>dependency><dependency> <groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-netflix-hystrixartifactId>dependency><dependency> <groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-config-serverartifactId><version>2.1.3.RELEASEversion>dependency><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-commonsartifactId><version>2.1.2.RELEASEversion>dependency><dependency> <groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency>dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-dependenciesartifactId><version>${spring-cloud.version}version><type>pomtype><scope>importscope>dependency>dependencies>dependencyManagement><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins>build>project>
server:port: 6666 #端口号
eureka:client:service-url:defaultZone: http://127.0.0.1:8761/eureka #注册到注册中心instance:prefer-ip-address: true #显示ip
spring:application:name: configsever #在注册中心显示的主机名cloud:config:server:git:uri: https://github.com/zz790609619/configRes #github的地址username: 790609619&#64;qq.com #github的账户名password: xxxxxx #gitHub的密码clone-on-start: true
package com.example.configsever;import org.springframework.boot.SpringApplication;import org.springframework.cloud.client.SpringCloudApplication;import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;&#64;EnableEurekaClient //加入注册中心
&#64;SpringCloudApplication
&#64;EnableConfigServer //启用配置服务端
/*** author : ww*/public class ConfigseverApplication {public static void main(String[] args) {SpringApplication.run(ConfigseverApplication.class, args);}
}
/{application}/{profile}[/{label}] /{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
{application} 就是应用名称&#xff0c;对应到配置文件上来&#xff0c;就是配置文件的名称部分&#xff0c;例如我上面创建的配置文件。
{profile} 就是配置文件的版本&#xff0c;我们的项目有开发版本、测试环境版本、生产环境版本&#xff0c;对应到配置文件上来就是以 application-{profile}.yml 加以区分&#xff0c;例如application-dev.yml、application-sit.yml、application-prod.yml。
{label} 表示 git 分支&#xff0c;默认是 master 分支&#xff0c;如果项目是以分支做区分也是可以的&#xff0c;那就可以通过不同的 label 来控制访问不同的配置文件了
<dependencies><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-configartifactId>dependency><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>dependency><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-eurekaartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-actuatorartifactId>dependency>dependencies>
spring:application:name: configclient #应用名称cloud:config:label: master #分支名discovery:enabled: trueservice-id: configsever # 服务端的spring.application.name 便于从eureka中寻找对应的名字的地址&#xff0c;以获取git中参数fail-fast: true #快速获取失败profile: master #相同文件名的后缀&#xff0c;application-dev.yml、application-master.yml
eureka:client:serviceUrl:defaultZone: http://127.0.0.1:8761/eureka/ #注册在eureka
&#64;SpringCloudApplication
public class ConfigclientApplication {public static void main(String[] args) {SpringApplication.run(ConfigclientApplication.class, args);}
}
&#64;Import({CompositeRepositoryConfiguration.class, JdbcRepositoryConfiguration.class, VaultConfiguration.class, VaultRepositoryConfiguration.class, CredhubConfiguration.class, CredhubRepositoryConfiguration.class, SvnRepositoryConfiguration.class, NativeRepositoryConfiguration.class, *GitRepositoryConfiguration.class*, DefaultRepositoryConfiguration.class})