在上一篇中,我们已经把Nacos的集群搭建好了,那么既然已经搭建好了,就要在咱们的项目中去使用。Nacos既可以做配置中心,也可以做注册中心。我们先来看看在项目中如何使用Nacos做配置中心。
Nacos配置中心
在项目中使用Nacos做配置中心还是比较简单的,我们先创建SpringBoot项目,然后引入nacos-config的jar包,具体如下:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
如果你不想使用SpringBoot默认的nacos-config版本,也可以指定版本号。
首先,我们进入到nacos的管理后台,第一步要创建命名空间,如图:
我们创建了user的服务配置,以后user相关的微服务都在这个命名空间中拉取配置。我们点击保存,命名空间的id会自动生成,这个id是十分重要的,我们要在项目中配置这个id。命名空间创建好以后,我们再创建配置文件,
在配置列表中,我们先选中刚才新建的命名空间:user服务配置。然后再点击新建,我的截图中已经把user-provider的配置文件创建好了。我们可以看一下如何新建,如图:
其中Data ID我们叫做user-provider,group我们用来区分本地环境、测试环境、生产环境。配置格式我们选择yaml,内容我们先配置一个username看看能不能生效。
然后在resources目录下创建bootstrap.yml,这个bootstrap.yml和application.yml是不一样的,它优先加载于application.yml,大家一定要注意他们的区别。我们要在bootstrap.yml文件中,要配置nacos的地址、命名空间、文件名等信息,具体如下:
spring:
cloud:
nacos:
server-addr: nacos-host:80
config:
file-extension: yml
name: user-provider
group: ${
spring.profiles.active}
namespace: e5aebd28-1c15-4991-a36e-0865bb5af930
application:
name: user-provider
- spring.application.name,这个不用说了,就是你应用的名称,我们叫做user-provider,用户服务的提供者。
- 再看上面的部分server-addr,这个是nacos的地址,我们配置为nacos-host:80。其中nacos-host需要配置host,指向nacos的ip,而端口80也是需要指定的,如果不指定端口,会默认8848端口。
- 再看config的部分,file-extension,文件的扩展名,这里我们使用yml,相应的,在nacos配置中心中,配置格式选择yaml。
- config.name对应着nacos管理后台的Data ID。
- group,在这里是分组,我们用作区分不同环境的标识,通过项目启动时传入的参数${spring.profiles.active}获得。
- namespace,命名空间,这里要填写命名空间的id,这个id在nacos后台中获取。这里我们填写的是user配置服务的命名空间id。
到这里,在项目中使用nacos做配置中心就搭建好了。我们在项目当中写个属性类,测试一下,看看能不能取到值。
@RefreshScope
@Setter@Getter
@Configuration
public class DatabaseConfig {
@Value("${username}")
private String username;
@Value("${server.port}")
private String port;
}
- 我们写了个DatabaseConfig类,先注意一下类上面的注解,@RefreshScope这个注解可以使我们在nacos管理后台修改配置以后,项目不用重启,就可以更改变量的值。
- @Setter@Getter这个是Lombok的注解,可以省去setget方法。
- @Configuration标识这个类是一个配置类,项目启动时会实例化。
- 在类里边,我们定义了两个变量,username和port,两个变量上面的注解@Value,可以取到对应的,属性的值。 u s e r n a m e 这 个 我 们 在 n a c o s 管 理 后 台 已 经 设 置 了 , {username}这个我们在nacos管理后台已经设置了, usern