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.簡單的測試就這樣,後面的步驟還有安全、加密、動態刷新、集成註冊中心等
本文爲作者原創,轉載請申明