搭建
下载
进入发布历史 | Nacos 官网,下载想要下载的版本,本次是为了验证一个2.1.2版本nacos配置中心中扩展配置的问题,所以选择了2.1.2
下载后是一个zip压缩包,可自行解压缩
配置
注意:测试使用单机模式即可,正式使用是需要变更配置文件与cmd脚本的,配置文件为nacos/config/application.properties
进入nacos/bin文件夹,编辑startup.cmd
将默认的集群模式改为单机模式(set MODE="standalone")
启动
双击startup.cmd,等待nacos启动完成
访问上图中console对应的网址(由于本地启动的,直接使用127.0.0.1也是可以的),默认用户名密码均为nacos
测试
调整demo项目
调整demo项目,将其注册中心由eureka改为nacos
- pom.xml
添加nacos依赖,删除eureka依赖
<!-- Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<!-- Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
<!-- </dependency>-->
- bootstrap.yml
server:
port: 8090
spring:
redis:
port: 1124
cloud:
nacos:
config:
server-addr: 10.211.146.255:8848
file-extension: yaml
#测试扩展配置
extension-configs:
- data-id: swagger.yml
refresh: true
group: DEFAULT_GROUP
discovery:
server-addr: 10.211.146.255:8848
#eureka:
# instance:
# # 以IP注册到注册中心
# preferIpAddress: ${EUREKA_INSTANCE_PREFER_IP_ADDRESS:true}
# # 续约间隔时间,默认30秒
# leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASE_RENEWAL_INTERVAL_IN_SECONDS:30}
# # 实例故障摘除时间,默认90秒,实际是90*2=180秒,配置45就是90秒
# leaseExpirationDurationInSeconds: ${EUREKA_INSTANCE_LEASE_EXPIRATION_DURATION_IN_SECONDS:45}
# client:
# service-url:
# defaultZone: http://root:123456@127.0.0.1:8761/eureka
# registryFetchIntervalSeconds: 30
- 配置中心验证代码
controller与接口忽略,想看代码可以查看demo代码
package com.learn.demo.app.service.impl;
import com.learn.demo.app.service.HelloService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
@Service
@RefreshScope
public class HelloServiceImpl implements HelloService {
private final static Logger logger = LoggerFactory.getLogger(HelloServiceImpl.class);
@Value("${spring.redis.port}")
private String testValue;
@Override
public void readValue() {
logger.info(testValue);
}
}
启动项目,访问nacos,发现demo项目已经注册上去了
添加配置
Data Id与Group为上文中bootstrap.yml中配置的内容
配置内容如下
spring:
redis:
port: 999999
点击页面最下面的发布按钮
控制台中有配置刷新的日志
测试
访问测试接口,打印testValue的值
发现替换成功
参考资料
[1].nacos下载
[2].适配nacos的demo项目