SpringBoot集成Nacos全过程
作者:Java王小怪
简介
Nacos 是阿里巴巴的新开源项目,其核心定位是 “一个更易于帮助构建云原生应用的集注册中心与配置中心于一体的管理平台”,又是我们口中所称的配置和注册中心。
上文说到如何安装和启动Nacos,那么现在我们就浅谈下Nacos的使用方法。
依赖
Nacos作为阿里的开源项目,他的依赖也必然带上了阿里,这一点注意别导错依赖了。
我这里使用的是2.2.1RELEASE,在这里值得一提的是,最起码nacos的大版本要和SpringBoot保持一致,注册和配置中心的依赖保持一致!!!!(如果后面出问题了,记得看一下依赖)
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.2.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.2.RELEASE</version> </dependency>
配置文件
在这里要说一下,配置文件在这里使用的是bootstrap.yml,为系统的配置文件,其优先级大于application.yml。
在这里我们也可以使用bootstrap.properties文件,其效果和yml文件相同。
spring: application: name: xiaoguai #为服务名 cloud: nacos: username: nacos password: nacos discovery: namespace: monitor group: monitor server-addr: localhost:8848 config: file-extension: yaml #后缀名,只支持 properties 和 yaml 类型 prefix: xiaoguai #文件名,如果没有配置则默认为 ${spring.appliction.name} namespace: monitor auto-refresh: true enable-remote-sync-config: true #启用远程同步配置, timeout: 3000 group: DEFAULT_GROUP #配置组 refresh-enabled: true server-addr: localhost:8848
下图为Nacos的对应关系:
在加上阿里的依赖后,启动类上还要添加注解@EnableDiscoveryClient开启配置。
mport org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @Author: xiaoguai * @Date: 2022-09/06/14:11 */ @SpringBootApplication @EnableDiscoveryClient public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } }
启动启动类后,访问nacos的地址https:localhost:8848/nacos,打开服务列表,为你的服务,服务名对应
spring.application.name:xiaoguai
代码
要实现配置文件的动态刷新,还需要一个注解@RefreshScope
在需要动态刷新的controller上添加此注解
注意:@Value注解为org.springframework.beans.factory.annotation.Value包下的,不要导成Lombok下的了!!!
@RestController @RefreshScope public class HelloController { @Autowired private MyConfiguration myConfiguration; @Value("${log.level}") private String level; @GetMapping("/info") public String getConfigInfo() { String all = myConfiguration.getUsername()+"<br>"+myConfiguration.getPassword()+level; System.out.println(all); return all; } }
测试
在启动之后访问以上内容
控制台和网页分别输出为:
现在我们在不重启应用的情况下,修改Nacos的配置文件。
在上次的网页进行刷新操作,分别观察网页和控制台的输出:
这样就完成了Nacos的动态配置和动态刷新了!!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。