配置客户端创建步骤
1、创建一个子项目mycloud-config-client-3355,添加依赖
<dependencies>
<!-- SpringCloud Config客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
2、在H:\git\mySpringCloud\mycloud-config路径下创建mycloud-config-client.yml提交到github上
spring:
profiles:
active:
- dev
---
server:
port: 8201
spring:
profiles: dev
application:
name: mycloud-config-client
eureka:
client:
service-url:
defaultZone: http://eureka-dev.com:7001/eureka/
---
server:
port: 8202
spring:
profiles: test
application:
name: mycloud-config-client
eureka:
client:
service-url:
defaultZone: http://eureka-test.com:7001/eureka/
3、创建bootstrap.yml
spring:
cloud:
config:
name: mycloud-config-client #需要从github上读取的资源名称,注意没有yml后缀名
profile: test #本次访问的配置项
label: master
uri: http://config-3344.com:3344 #本微服务启动后先去找3344号服务,通过SpringCloudConfig获取GitHub的服务地址
application.yml
spring:
application:
name:mycloud-config-client
application.yml是用户级的资源配置项,bootstrap.yml是系统级的,优先级更高
SpringCloud会创建一个‘Bootstrap Context’作为Spring应用的Application Context的父上下文,初始化的时候‘bootstrap Context’负责从外部源加载配置属性并解析配置。这两个上下文共享一个外部获取的Environment。Bootstrap属性有高优先级,默认情况下不会被本地配置覆盖。bootstrap context和Application Context有着不同的约定,所有增加一个bootstrap.yml文件保证bootstrap context和Application Context配置分离。
4、hosts添加映射
127.0.0.1 client-config.com
5、新建ConfigClientRest类,用于验证读取的配置
@RestController
public class ConfigClientRest {
@Value("${spring.application.name}")
private String applicationName;
@Value("${eureka.client.service-url.defaultZone}")
private String eurekaServers;
@Value("${server.port}")
private String port;
@RequestMapping("/config")
public String getConfig()
{
String str = "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port;
System.out.println("******str: " + str);
return "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port;
}
}
6、添加启动主类
@SpringBootApplication
public class ConfigClientStartSpringCloud3355 {
public static void main(String[] args) {
SpringApplication.run(ConfigClientStartSpringCloud3355.class, args);
}
}
7、测试
启动mycloud-config-3344以及mycloud-config-client-3355,
访问http://config-3344.com:3344/master/mycloud-config-client-test.yml
访问http://config-3344.com:8202/config
修改mycloud-config-client-3355配置文件bootstrap.yml ,并重启
profile: dev
配置实战
添加本地配置文件,并提交到git
1、mycloud-config-eureka-client.yml
spring:
profiles:
active:
- dev
---
server:
port: 7001
spring:
profiles: dev
application:
name: mycloud-config-eureka-client
eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: false
fetch-register: false
service-url:
defaultZone: http:// eureka7001.com/eureka/
---
server:
port: 7001
spring:
profiles: test
application:
name: mycloud-config-eureka-client
eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: false
fetch-register: false
service-url:
defaultZone: http:// eureka7001.com/eureka/
2、mycloud-config-dept-client.yml
dev数据库连的是cloudDB01,test数据库连的是cloudDB02
spring:
profiles:
active:
- dev
---
server:
port: 8001
spring:
profiles: test
application:
name: mycloud-config-dept-client
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型
driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包
url: jdbc:mysql://localhost:3306/cloudDB01 # 数据库名称
username: root
password: root
dbcp2:
min-idle: 5 # 数据库连接池的最小维持连接数
initial-size: 5 # 初始化连接数
max-total: 5 # 最大连接数
max-wait-millis: 200 # 等待连接获取的最大超时时间
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
type-aliases-package: com.atguigu.springcloud.entities # 所有Entity别名类所在包
mapper-locations:
- classpath:mybatis/mapper/**/*.xml
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://eureka7001.com:7001/eureka
instance:
instance-id: dept-8001.com
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
---
server:
port: 8001
spring:
profiles: dev
application:
name: mycloud-config-dept-client
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB02
username: root
password: root
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml
type-aliases-package: com.atguigu.springcloud.entities
mapper-locations:
- classpath:mybatis/mapper/**/*.xml
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka
instance:
instance-id: dept-8001.com
prefer-ip-address: true
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
Config版的eureka服务端
1、新建项目mycloud-config-eureka-client-7001,并添加依赖
<dependencies>
<!-- SpringCloudConfig配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 热部署插件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
2、添加bootstrap.yml
spring:
cloud:
config:
name: mycloud-config-eureka-client #需要从github上读取的资源名称,注意没有yml后缀名
profile: dev
label: master
uri: http://config-3344.com:3344 #SpringCloudConfig获取的服务地址
3、添加application.yml
spring:
application:
name: mycloud-config-eureka-client
4、添加主启动类,并启动测试
配置读取正确
eureka启动成功
Config版的Dept微服务
1、新建项目mycloud-config-dept-client-8001,引入依赖
<dependencies>
<!-- SpringCloudConfig配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency><!-- 引入自己定义的api通用包,可以使用Dept部门Entity -->
<groupId>cn.it.tencent</groupId>
<artifactId>mycloud-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
2、application.yml
spring:
application:
name: mycloud-config-dept-client
bootstrap.yml
spring:
cloud:
config:
name: mycloud-config-dept-client
profile: test
label: master
uri: http://config-3344.com:3344
3、主启动类
@EnableEurekaClient
@SpringBootApplication
public class ConfigDeptApp8001 {
public static void main(String[] args) {
SpringApplication.run(ConfigDeptApp8001.class, args);
}
}
4、复制项目的mycloud-provider8001其他业务代码
5、测试,先启动mycloud-config-3344、在启动mycloud-config-eureka-client-7001和mycloud-config-dept-client-8001
6、访问http://localhost:8001/dept/list
把 bootstrap.yml中profile改成dev
我们也可以修改远程的mycloud-config-dept-client.yml文件达到修改配置文件的目的。