对于nacos的安装此处没有说明,为安装后进行的操作
依赖导入
首先导入spring boot 和 spring cloud 相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
这几个类是工程运行的基础
然后导入nacos的相关依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
在这里插入代码片
这两个依赖一个是用于将服务注册到nacos上去,让nacos能发现咱们的服务nacos-discovery,一个是用于nacos相关配置。所以两者都需要,当时了解相关博客时有些只有其中之一,有可能是在原有基础上截取下来,而并非重0 到1的服务搭建。
代码中注解配置
完成了第一步依赖后,则需要在启动时让服务能够注册到对应nacos上去,所以我们要进行配置
cloud下nacos得有两个最基础的配置,一个discovery和config。discovery是为了nacos能发现咱们的服务,config是用于一些信息配置,相当于能与nacos建立联系,discovery只是让服务能被发现。
这儿新建命名空间,填了必填后若命名空间ID不填则自动生成,这儿可用于生产和测试配置区分。这个命名空间ID对应bootstrap中namespace配置
在新建完成后咱们的nacos中的配置管理中的配置列表中就有咱们添加的一个test空间。在这里面配置管理 | test后面的字符串也就是填的namespace
然后这里面在进行相关配置,此处我就只配了两个,一个sql基础配置,一个测试用的一个常量配置
此处配置了一条测试配置,看后面能否获取到这条数据
然后对应咱们的bootstrap配置,首先配置discovery和config下的server-addr配置,对应上咱们的nacos
然后配置上对应的nacos配置管理中的配置
最后配置上profiles:active:对应的是咱们所使用的是哪个命名空间的的配置,应为实际开发中生产和测试肯定配置会存在差异。然后就是application:name:是咱们注册到nacos上对应的本服务的名称。
服务配置
在基础的配置都完成后,咱们要进行服务配置,以便于服务启动时能够加载到咱们的nacos。
启动类中加上@EnableDiscoveryClient注解
然后创建一个serviceImpl服务,使用注解@Value(“”)去获取nacos中咱们的配置数据。此处的 @RefreshScope 也是实现动态更新配置。
然后在创建个controller去调用咱们的service以完成测试。
期间存在的问题
在使用@RefreshScope注解时,不能加在controller中似乎会与@RestController冲突,@Controller亦是如此。
配置对于bootstrap.yml配置要优先于application,服务扫描是先扫描bootstrap配置文件。所以对于nacos的基础配置最好放在bootstrap中。
期间配置都差不多为最基础的,所以都得配上。以前的版本有些配置过期了,当时配置一些弃用的,也存在一些问题。所以基础配置如上,得都配置上
有不完美之处欢迎指出