springcloudconfig的搭建
服务端
1.config-server的搭建
之前还有用eureka的现在用consul了,服务注册中心可以不用连接
<dependencies>
<!-- consul看个人需不需要 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.yml文件
本地的yml
server:
port: 8001 #服务端口
spring:
application:
name: config-server #应用名称
cloud:
config:
server:
native:
search-locations: F:/ceshi/env/dev #本地的配置文件路径
consul:
discovery: true #注册自己
host: localhost # consul地址
#port:8500
profiles:
active: native #本地配置文件必须开启本地环境
git的yml
server:
port: 8079
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/authorZhao/rpc.git
username: username #用户名
password: password #密码
#default-label: dev 默认分支,如果不开启需要输入分支
search-paths: dubboInterface/env/dev,dubboInterface/env/local #配置文件目录
下面是git的文件路径,还有一个在local下面
3.启动类上面加上
@SpringBootApplication
@EnableConfigServer //开启springcloudconfig服务端
@EnableDiscoveryClient //是否注册到注册中心
public class ConfigServerConsuleApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerConsuleApplication.class, args);
}
}
4.运行测试
//访问规则
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
{application} 就是应用名称,比如我的:application-redis
{profile} 就是配置文件的版本比如 dev、local
{label} 比如master、dev。
//访问网站
//第一个dev代表分支,后面的是应用名+版本,其他的方式自己测试一下就行
http://localhost:8079/dev/application-jdbc-dev.yml
客户端
1.pom依赖
<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>
2.bootstrap.yml
因为bootstrap.yml加载优先级高,在这里面配置config
spring:
application:
name: application-redis
cloud:
config:
profile: ${pro:dev} #这个可以通过参数控制版本,也可以写死多个值,用逗号分隔
#profile: test
#uri: http://47.112.99.18:8079
uri: http://127.0.0.1:8079/
label: dev
3.启动类
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Value("${redis.name}")
private String name;
@RequestMapping("/getName")
public Map getName(){
Map<String, Object> map = new HashMap<>();
map.put("name",name);
return map;
}
}
4.测试
说明
1.之前一直想做到配置文件同名但是目录不同名,我到现在还没做到,只能按照标准命名
2.本地和就是把配置换成本地的就行
3.简单的测试就这样,后面的步骤还有安全、加密、动态刷新、集成注册中心等
本文为作者原创,转载请申明