springcloud 整合alibaba nacos步骤快速上手教学
springcloud 整合alibaba nacos
(一、nacos注册中心)
1.导入nacos-discover依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
在导入依赖的时候最好注明其版本号,以防止maven无法下载
注:springcloud在<spring-cloud.version>2021.0.0</spring-cloud.version>该版本时不支持nacos自带的负载均衡器ribbon,需要在nacos中祛除ribbon依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.4.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
2.启动nacos服务
3.配置application.yml
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
注:127.0.0.1:8848是nacos服务的地址,只填这个就行
application:
name: 自己命名一个服务名 不命名的话在nacos里找不到
4.启动项目,记得要添加注解
@EnableDiscoveryClient
5.输入nacos地址 http://127.0.0.1:8848/nacos 即可在服务列表里看到咱们注册的服务了
(二、nacos配置中心)
1.添加nacos-config依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
2.启动nacos服务
3.配置bootstrap.yml
spring:
application:
name: 自己命名一个服务名
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: 这个可不填,后续会讲到怎么用
4.启动项目
5.打开
http://127.0.0.1:8848/nacos
在配置列表中点击最右测的+号
Data ID可在项目启动时查看
如果没有这个提示需要导入bootstrap依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.0</version>
</dependency>
Data ID 一般为项目名+properties组成
我这边的项目名为gulimall-coupom,所以Data ID就叫做gulimall-coupom.properties
在新建配置里输入ulimall-coupom.properties
Group 是组的意思,在nacos里叫做命名空间,通过业务需求来隔离配置的。例如有开发环境、测试环境,两个环境需要不同的配置,既可创建两个组来分别管理配置
可以点击最右上角的命名空间来去命名一个新的空间
而namespace 就是用来选填命名空间ID的,配置上不同的命名空间来去应用不同的配置
6.这里来一个示例
在项目中创建一个application.properties,输入
test.user.name = wsc
test.user.age = 100
然后在controller中输入
@Value("${test.user.name}")
private String name;
@Value("${test.user.age}")
private Integer age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name",name).put("age",age);
}
启动项目,运行成功后在网页输出得出结果
新建配置
因为我们用的是properties配置,所以这里选择properties
在这里改变它的值,点击发布,然后重新启动项目输入地址得到结果
此时就已经生效了.当然,这个每次修改发布之后重新启动项目也是一个费时间的活,所以可以在controller中加入注解
@RefreshScope
自动开启发布生效