项目配置nacos
零、下载nacos并启动,开放端口。确保可以使用网页版登录。
-
登录nacos网页配置
http://localhost:8848/nacos/index.html
账号 nacos 密码 nacos
-
配置命名空间: 测试环境/线上环境(命名空间ID在代码配置文件中配置)
-
新增配置(新增dataId、分组等)
-
项目配置
在代码配置文件 application-production.properties/application-simulation.properties中添加属性
nacos.config.server-addr=服务器地址 nacos.config.namespace=命名空间ID nacos.config.data-id= =iot-smart-gateway.properties nacos.config.auto-refresh=true
项目发布时 通过启动脚本中 添加参数-Dspring.profiles.active=$production()
$production是服务器系统变量 可在服务器通过 echo $production 查看
在META-INF/assembly/bin/start.sh 修改启动脚本
JAVA_PROFILE="" if [ -n "$production" ]; then JAVA_PROFILE=" -Dspring.profiles.active=$production" fi
一、gateway项目(使用springboot的mian方法启动)使用Nacos SpringBoot集成
-
引入依赖
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。多次试验发现iot项目适合使用0.1.7,其他版本会导致监听失效取不到配置。
<!-- nacos配置 --> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.1.7</version> </dependency>
-
项目配置
IDEA中本地测试可以配置启动选项
-
类配置 在需要配置的类上添加注解
@NacosPropertySource(dataId = "${nacos.config.data-id}", autoRefreshed = true) public class YiTuCallBackController {}
-
属性配置 在需要配置的属性上添加注解
@NacosValue(value = "${house-center-base.gateway.url:unknown}", autoRefreshed = true) private String useLocal;
-
直接引用属性即可。
return RestResult.wrapSuccessResponse(useLocal);
二、service项目(使用dubbo的main方法启动)使用Nacos Spring集成
-
引入依赖
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-spring-context</artifactId> <version>0.3.6</version> </dependency>
-
IDEA中本地测试可以配置环境变量spring.profiles.active=simulation
-
新建配置类(dubbo启动的项目 不会主动加载resource下的配置文件 需要手动加载)
@Configuration @PropertySource(value = "classpath:application-${spring.profiles.active}.properties") public class Config { }
-
新建nacos配置类
@Configuration @EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "${nacos.config.server-addr}", namespace = "${nacos.config.namespace}")) @NacosPropertySource(dataId = "${nacos.config.data-id}", autoRefreshed = true) public class NacosConfiguration { }
-
属性配置。
@NacosValue(value = "${house-center-base.gateway.url:unknown}", autoRefreshed = true) private String useLocal;
三、nacos配置使用(配置实时刷新 不需要重启服务)
- 页面配置
-
代码配置
@NacosValue(value = "${house-center-base.gateway.url:unknown}", autoRefreshed = true) private String useLocal;
@NacosValue(value = "${house-center-base.gateway.url:unknown}", autoRefreshed = true) private String useLocal;