Jdk:1.8
Spring Boot:2.2.5.RELEASE
Nacos-server:1.4.1
Dubbo:2.7.8
Nacos-client:1.2.1
1 maven依赖
这里只展示了相关的依赖,不相关的都忽略了。
<properties>
<java.version>1.8</java.version>
<dubbo.version>2.7.8</dubbo.version>
<nacos.start.version>0.2.7</nacos.start.version>
</properties>
<!-- nacos作为注册中心 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.2.1</version>
</dependency>
<!-- nacos作为配置中心 spring-boot版本不能高于2.3 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${nacos.start.version}</version>
</dependency>
2 在Nacos-server添加配置
2.1 访问http://127.0.0.1:8848/nacos
2.2 点击 配置列表,点击右边 + 号,创建配置文件
2.3 添加/修改配置
Data ID 的完整规则格式如下
{prefix}-{spring.profiles.active}.{type}
prefix 默认为所属工程配置spring.application.name 的值
spring.profiles.active=dev 即为当前环境对应的 profile。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 {prefix}.{type}
type 为配置内容的数据格式,可以通过配置项 nacos.config.type 来配置。目前支持 properties、yaml、xml、json、text、html 类型。
这里我们添加一个redis.yaml
Data ID :redis.yaml
Group:DEFAULT_GROUP
配置格式:YAML
配置内容:
spring:
redis:
port: 6379
host: 127.0.0.1
password:
database: 1
最后点击右下角发布
2.4 后续更新配置信息点击配置右侧编辑 然后发布即可
3 yml配置
主要需要关注registry.address与nacos配置中心配置,其他配置参考Dubbo与Spring Boot集成
#dubbo配置
dubbo:
application:
id: dubbo-user-service
#当前服务/应用的名字
name: dubbo-user-service
scan:
# 包名根据自己的实际情况写
base-packages: com.fengzi.dubbo.user
protocol:
port: 20771
name: dubbo
registry:
# 这里改为nacos-server的地址 nacos为注册中心
address: nacos://127.0.0.1:8848
consumer:
#过期时间
timeout: 30000
#服务分组
group: dubbo
check: false
provider:
#过期时间
timeout: 30000
#服务分组
group: dubbo
#nacos配置中心配置
nacos:
config:
bootstrap:
#开启配置预加载功能
enable: true
server-addr: 127.0.0.1:8848 #nacos-server地址
#命名空间 默认为public
namespace: e05382af-7b4e-45ba-b55d-98d5d1be51f6
#多个配置可用“,”分隔
data-ids: redis.yaml
type: yaml #固定为yaml类型配置
#开启自动刷新
auto-refresh: true
#默认分组 DEFAULT_GROUP
group: DEFAULT_GROUP
4 使用配置
通过@NacosValue注解、Environment、NacosConfigurationProperties均可以获取并实时自动刷新
需要实时刷新的配置 autoRefreshed必须设置为true ,Environment默认实时获取最新配置
/**
* 实时获取
*/
@NacosValue(value = "${spring.redis.database}", autoRefreshed = true)
private Integer redisDatabase;
@NacosValue(value = "${spring.redis.host}", autoRefreshed = true)
private String redisHost;
@NacosValue(value = "${spring.redis.port}", autoRefreshed = true)
private Integer redisPort;
/**
* 实时获取
*/
@Resource
private Environment env;
/**
* 实时获取
*/
@Resource
private RedisProperties redisProperties;
如下是RedisProperties.java示例
import com.alibaba.nacos.api.config.ConfigType;
import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties;
import lombok.Data;
import org.springframework.stereotype.Component;
/**
* @author fengzi
* @version 1.0
* @date 2021/04/02
*/
@Component
@Data
@NacosConfigurationProperties(dataId = "redis.yaml",prefix = "spring", autoRefreshed = true, type = ConfigType.YAML)
public class RedisProperties {
private Redis redis;
@Data
public static class Redis {
private Integer database;
private String host;
private Integer port;
}
}
最后校验一下配置是否获取到 以及是否实时刷新吧!!!