网站推广工作如何做,enjooy wordpress,重庆网站建设公司 十年,推广图片发布混淆信息在上一篇文章讲述zuul的时候#xff0c;已经提到过#xff0c;使用配置服务来保存各个服务的配置文件。它就是Spring Cloud Config。
一、简介 在分布式系统中#xff0c;由于服务数量巨多#xff0c;为了方便服务配置文件统一管理#xff0c;实时更新#xff0c;所以需…在上一篇文章讲述zuul的时候已经提到过使用配置服务来保存各个服务的配置文件。它就是Spring Cloud Config。
一、简介 在分布式系统中由于服务数量巨多为了方便服务配置文件统一管理实时更新所以需要分布式配置中心组件。在Spring Cloud中有分布式配置中心组件spring cloud config 它支持配置服务放在配置服务的内存中即本地也支持放在远程Git仓库中。在spring cloud config 组件中分两个角色一是config server二是config client。
二、构建Config Server 创建一个spring-boot项目取名为config-server,其pom.xml:
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.hmblogs/groupIdartifactIdconfig-server/artifactIdversion0.0.1-SNAPSHOT/versionpackagingjar/packagingnameconfig-server/namedescriptionDemo project for Spring Boot/descriptionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.5.2.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-config-server/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-eureka/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionCamden.SR6/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/buildrepositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/urlsnapshotsenabledfalse/enabled/snapshots/repository/repositories/project
在程序的入口Application类加上EnableConfigServer注解开启配置服务器的功能代码如下
package com.hmblogs;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;SpringBootApplication
EnableConfigServer
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}
}需要在程序的配置文件application.properties文件配置以下
spring.application.nameconfig-server
server.port7888spring.cloud.config.server.git.urihttps://github.com/forezp/SpringcloudConfig/
spring.cloud.config.server.git.searchPathsrespo
spring.cloud.config.labelmaster
spring.cloud.config.server.git.usernameyour username
spring.cloud.config.server.git.passwordyour password
spring.cloud.config.server.git.uri配置git仓库地址 spring.cloud.config.server.git.searchPaths配置仓库路径 spring.cloud.config.label配置仓库的分支 spring.cloud.config.server.git.username访问git仓库的用户名 spring.cloud.config.server.git.password访问git仓库的用户密码 如果Git仓库为公开仓库可以不填写用户名和密码如果是私有仓库需要填写本例子是公开仓库放心使用。
远程仓库https://github.com/forezp/SpringcloudConfig/ 中有个文件config-client-dev.properties文件中有一个属性
foo foo version 3
启动程序访问http://localhost:7888/foo/dev
{name:foo,profiles:[dev],label:master, version:792ffc77c03f4b138d28e89b576900ac5e01a44b,state:null,propertySources:[]} 证明配置服务中心可以从远程程序获取配置信息。
http请求地址和资源文件映射如下:
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties 三、构建一个config client 重新创建一个springboot项目取名为config-client,其pom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.hmblogs/groupIdartifactIdconfig-client/artifactIdversion0.0.1-SNAPSHOT/versionpackagingjar/packagingnameconfig-client/namedescriptionDemo project for Spring Boot/descriptionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.5.2.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-config/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionDalston.RC1/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/buildrepositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/urlsnapshotsenabledfalse/enabled/snapshots/repository/repositories/project 其配置文件bootstrap.properties
spring.application.nameconfig-client
spring.cloud.config.labelmaster
spring.cloud.config.profiledev
spring.cloud.config.uri http://localhost:7888/
server.port7887 spring.cloud.config.label 指明远程仓库的分支
spring.cloud.config.profile
dev开发环境配置文件 test测试环境 pro正式环境 spring.cloud.config.uri http://localhost:8888/ 指明配置服务中心的网址。
程序的入口类写一个API接口“/hi”返回从配置中心读取的foo变量的值代码如下
package com.hmblogs;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;SpringBootApplication
RestController
public class ConfigClientApplication {public static void main(String[] args) {SpringApplication.run(ConfigClientApplication.class, args);}Value(${foo})String foo;RequestMapping(value /hi)public String hi(){return foo;}
} 打开网址访问http://localhost:7887/hi网页显示
foo version 3 这就说明config-client从config-server获取了foo的属性而config-server是从git仓库读取的,如图