登录
注册
写文章
发现
工具
nacos+springboot实现多环境实时更新配置
_3t3lfz KEKfID
编辑文章
nacos+springboot实现多环境实时更新配置
asfx站长
2021.09.16 15:35:46
阅读
1097
这里通过namespace的方法来实现多环境隔离配置。 springboot的主版本使用的是:2.3.3.RELEASE 1.添加依赖 ``` <properties> <java.version>1.8</java.version> <spring-boot.version>2.3.3.RELEASE</spring-boot.version> <nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>${nacos-config-spring-boot.version}</version> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-actuator</artifactId> <version>${nacos-config-spring-boot.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> ``` 2.在nacos中添加命名空间,并定义命名空间id(若不指定则系统默认生成uuid) ![](//www.asfx.xyz/statics/images/bg/202109/16/c2b5bef98869483eb6417196cefa7060.png) 3.在nacos对应的命名空间新建配置 ![](//www.asfx.xyz/statics/images/bg/202109/16/0ca72bdc2f054ec2be587c970ef2de08.png) ![](//www.asfx.xyz/statics/images/bg/202109/16/1ccab079366a438c8ad9d52359aa5ac9.png) 4.新建几个配置文件,比如application-dev.properties和application-test.properties,里面指定不同的namespace application-dev.properties: ``` nacos.config.server-addr=127.0.0.1:8848 nacos.config.namespace=ns_dev ``` application-test.properties: ``` nacos.config.server-addr=127.0.0.1:8848 nacos.config.namespace=ns_test ``` 5.启动的时候指定环境,例如在application.properties中指定为开发环境:spring.profiles.active=dev 6.可实时更新的属性配置建议统一某个类中指定,这样方便管理和废弃。 ``` import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties; import com.alibaba.nacos.api.config.annotation.NacosValue; import lombok.Data; import org.springframework.context.annotation.Configuration; @Data @Configuration @NacosConfigurationProperties(dataId = "example-d", autoRefreshed = true) public class NacosProperties { @NacosValue(value = "${say.hello:}", autoRefreshed = true) private String sayHi; } ``` 7.代码调用 ``` import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/hello") public class HelloController { @Autowired NacosProperties nacosProperties; @GetMapping("/sayHi") public String sayHi() { return nacosProperties.getSayHi(); } } ``` 这样,既能实现在不停服务的情况下实时更新配置,又能按照环境去隔离配置。后期还能按照命名空间去分配权限给其他人员进行隔离使用。
我的主页
退出