- maven引入nacos依赖,须包含有配置中心config
<!-- 服务注册/发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 配置中心来做配置管理--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
maven中使用nacos配置dev,test,prod,使用不同的命名空间实现隔离:
<!-- 配置文件管理 --> <!--统一配置开发测试生产环境--> <profiles> <profile> <!--开发环境--> <id>dev</id> <!-- 加了这个,默认选中 --> <activation> <activeByDefault>true</activeByDefault> </activation> <!--以下属性用于 bootstrap.yml 文件中 可通过 @activatedProperties@ 获取配置的变量--> <properties> <activatedProperties>dev</activatedProperties> <nacosNamespace>shop-dev</nacosNamespace> </properties> </profile> <profile> <!--测试环境--> <id>test</id> <properties> <activatedProperties>test</activatedProperties> <nacosNamespace>shop-test</nacosNamespace> </properties> </profile> <!--生产环境--> <profile> <id>prod</id> <properties> <activatedProperties>prod</activatedProperties> <nacosNamespace>shop-prod</nacosNamespace> </properties> </profile> </profiles>
刷新maven后,在右侧maven面板的Profiles可以看到配置的环境分支,当需要切换环境时,取消原有分支的勾选,并勾选要切换到的分支名,刷新maven,就可以实现无需修改代码动态切换环境分支了。如下图所示:
2.在项目src/main/resources目录下创建bootstrap.properties或bootstrap.yml文件,这里使用 bootstrap.yml文件,文件中写下如下内容:
spring: application: name: shop-gateway profiles: active: @activatedProperties@ cloud: nacos: discovery: server-addr: 113.1xx.2xx.1xx:8848 #Nacos服务注册中心地址 namespace: @nacosNamespace@ config: enabled: true server-addr: 113.1xx.2xx.1xx:8848 #Nacos作为配置中心地址 file-extension: yaml #指定yaml格式的配置 namespace: @nacosNamespace@ #Nacos命名空间 group: DEFAULT_GROUP refresh-enabled: true #启用动态刷新
这里补充说明一下,为什么创建 bootstrap.yml文件而不是application开头的文件是缘于springboot项目启动读取文件的优先级、先后顺序:bootstrap.properties>bootstrap.yml>application.properties>application.yml
3.本地配置一个bootstrap.yml文件,其他文件放到nacos配置中心方便修改后无须重启服务器(必要时还是须手动重启) 。登录nacos控制台,主要用到配置管理、服务管理和命名空间3个菜单的功能。
在命名空间依次创建开发测试生产的命名空间。nacos主要通过命名空间ID识别,如果不填写,默认会生成类似UUID那样的格式,我们可以自定义命名方便快速识别如:shop-dev、shop-test、shop-prod。
4.命名空间创建好后,到配置列表创建配置文件,选中要创建配置文件的命名空间,如shop-dev,创建配置文件,这里需要注意Data ID命名,一定要带后缀,如.yaml .properties,不带后缀会导致后台服务识别不了,如果启动服务控制台打印一堆类似Ignore the empty nacos configuration and get it based on dataId的信息,启动失败,很有可能是Data ID命名不符合nacos规范,导致识别不了,从而导致无法正常启动。
nacos官方建议使用的命名规则:应用名+环境名+文件的后缀,应用名和环境名之间用“-”连接起来,文件的后缀建议使用.yaml或.properties。应用名取项目中对应微服务的bootstrap.yml文件中spring.application.name的值,环境名取我们上面maven pom文件中定义的dev/test/prod的名字,示例:shop-gateway-dev.yaml。如果没有环境分支,则直接命名为shop-gateway.yaml。
注意:为防止服务跑错进入错误的命名空间,保险起见可在nacos对应微服务的配置文件指定命名空间。如果出现跑错现象,通过查看项目启动日志和编译文件代码来定位原因。
此外还需注意服务器安装的nacos版本要与引入的nacos依赖版本对应,具体可查看maven中nacos的dependecies,如下图所示:
经过以上步骤,就可实现nacos+maven组合实现多环境配置。