푰’풎 풉풉품, 푰 풂풎 풂 품풓풂풅풖풂풕풆 풔풕풖풅풆풏풕 풇풓풐풎 푵풂풏풋풊풏품, 푪풉풊풏풂.
푺풉풄풐풐풍: 푯풐풉풂풊 푼풏풊풗풆풓풔풊풕풚 푳풆풂풓풏풊풏품: 푰’풎 풄풖풓풓풆풏풕풍풚 풍풆풂풓풏풊풏품 풅풆풔풊품풏 풑풂풕풕풆풓풏, 푳풆풆풕풄풐풅풆, 풅풊풔풕풓풊풃풖풕풆풅 풔풚풔풕풆풎, 풎풊풅풅풍풆풘풂풓풆 풂풏풅 풔풐 풐풏. 푯풐풘 풕풐 풓풆풂풄풉 풎풆:푽푿 푴풚 풃풍풐품: 풉풕풕풑풔://풉풉품풚풚풅풔.풃풍풐품.풄풔풅풏.풏풆풕/ 푷풓풐풇풆풔풔풊풐풏풂풍 풔풌풊풍풍풔:풎풚 풅풓풆풂풎
1-1:环境说明
因为版本不一样,总会有各种问题,所以这里我给出了我的所有的环境。
nacos: 1.1.4maven:3.6.3pom.xml:里面有springcloud等一系列的版本
UTF-8
1.8
1.8
4.12
1.2.17
1.16.18
5.1.47
1.1.16
1.3.0
org.springframework.boot
spring-boot-dependencies
2.2.2.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
Hoxton.SR1
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.1.0.RELEASE
pom
import
mysql
mysql-connector-java
${mysql.version}
com.alibaba
druid
${druid.version}
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis.spring.boot.version}
junit
junit
${junit.version}
log4j
log4j
${log4j.version}
org.projectlombok
lombok
${lombok.version}
true
docker-compose.yaml,dokcer构建nacos的配置version: "2"
services:
nacos:
image: nacos/nacos-server:1.1.4
container_name: nacos_test
environment:
- MODE=standalone
volumes:
- ./logs/:/home/nacos/logs
ports:
- "8848:8848"
1-2:Nacos操作
主要采用namespace+group+dataId的格式完成三个环境的设置。
创建3个命名空间:记住这里的命名空间ID回头要用
分别在不同的命名空间中创建配置,代表3个环境,并设置好需要读取的配置:
config:
info: "dataId:nacos-config-client-prod.yaml;group:nacos-group-prod;namespace:099fa140-a9d1-42af-861b-85ae54471703"
类似这样的一共设置3个,那么nacos的设置到这就结束了。 1-3:手动切换nacos环境
传统的我们怎么做呢?像这样:
application.yml:
spring:
profiles:
active: dev
bootstrap.yal:server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
namespace: aa0828b7-9470-4b30-a387-5f795528e1af
group: nacos-group-dev
如果你要切换到prod环境下,你就得把上面的配置都换掉,换 spring.profiles.active namespace 还有group,那么我就想了,能不能不用手动呢?或者借助什么工具来做呢?事实上是可以的,比如配合maven就可以!
1-4:配合maven实现环境的切换pom.xml:首先在maven配置文件里面,当然了分布式在总的模块pom里面设置就可以了!为了简单,这里就弄两个properties,意思一下就可以了。
application.ymldev dev aa0828b7-9470-4b30-a387-5f795528e1af nacos-group-${activatedProperties} test true test c16b5823-ed59-48a6-b4af-fa79a17d57e8 nacos-group-${activatedProperties} prod prod 099fa140-a9d1-42af-861b-85ae54471703 nacos-group-${activatedProperties}
spring:
profiles:
active: @activatedProperties@
bootstrap.ymlserver:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
namespace: @nacosNamespace@
group: @nacosGroup@
分布式项目里面单个服务模块的pom.xml,不加的话@xx@这个符号无法替换成maven配置里面的数据,这一点要注意:controllersrc/main/resources true
@RestController
@RefreshScope //支持nacos的动态刷新功能
public class ConfigClientController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
1-5:测试
首先maven上面出现了这样的可选记号,我们可以选择自己的环境,然后启动项目。
接口:
http://127.0.0.1:3377/config/info
maven切换成dev:
可以发现,这里的文件已经成功切换了,这样就可以做到通过nacos来一键切换环境,并且充分利用nacos的特性。
这里给出项目github地址,因为有的代码并没有给出,主要就是3377这个测试用的和父模块里面的pom
点我跳转github:或者复制地址:https://github.com/21want28k/springcloud.git



