- 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>
2.在项目src/main/resources目录下创建bootstrap.properties或bootstrap.yml文件,这里使用 bootstrap.yml文件,文件中写下如下内容:
spring:application:name: shop-gatewayprofiles:active: @activatedProperties@cloud:nacos:discovery:server-addr: 113.1xx.2xx.1xx:8848 #Nacos服务注册中心地址namespace: @nacosNamespace@ #Nacos命名空间 config:enabled: trueserver-addr: 113.1xx.2xx.1xx:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置namespace: @nacosNamespace@group: DEFAULT_GROUPrefresh-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依赖版本对应,具体可查看maven中nacos的dependecies,如下图所示:
经过以上步骤,就可实现nacos+maven组合实现多环境配置。