nacos不仅作为注册中心,还可以作为配置中心。
在Consumer添加依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.1</version>
</dependency>
添加bootstrap.properties:
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
nacos配置要放在bootstrap.properties文件中。
打开Nacos控制台,在左侧的配置管理 > 配置列表
下点击创建配置按钮,
Data ID填的是服务名,Group是组名,默认值是DEFAULT_GROUP。
修改HelloConsumer:
@Value("${my}")
private String my;
@RequestMapping("/configValue")
public String configValue() {
return my;
}
访问http://localhost:7001/consumer/configValue,看到123
当Nacos Config加载配置时,还会加载DataId为${spring.application.name}.${file-extension:properties}
的基本配置,以及DataId为${spring.application.name}-${profile}.${file extension:properties}
。如果需要使用不同环境中的不同配置,可以使用spring提供的${spring.profiles.active}
配置。例如:
在bootstrap.properties增加配置:
spring.profiles.active=dev
在nacos重新配置:
Data ID为consumer-dev.properties,必须写上文件后缀名
。访问http://localhost:7001/consumer/configValue,看到123
nacos还支持yaml格式的配置文件,在bootstrap.properties增加配置:
spring.application.name=consumer
spring.profiles.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=yml
在nacos重新配置:
注意spring.cloud.nacos.config.file-extension
的值要和Data ID的文件后缀名
相同。
访问http://localhost:7001/consumer/configValue,看到123。在nacos修改配置的my为123tyui,访问http://localhost:7001/consumer/configValue,看到123。没看到最新的配置。需要在HelloConsumer加@RefreshScope
,不用重启就可看到修改后的配置。
将HelloConsumer上的@RefreshScope和@Value("${my}")注释,添加:
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserConfig {
private String name;
private Integer age;
}
在到ConsumerApplication启动类添加@EnableConfigurationProperties
。修改HelloConsumer:
@Autowired
private UserConfig userConfig;
@RequestMapping("/userConfig")
public UserConfig userConfig() {
return userConfig;
}
在nacos添加配置:
访问http://localhost:7001/consumer/userConfig,看到{"name":"张三","age":36}。修改nacos配置:
发布配置后不重启Consumer,访问http://localhost:7001/consumer/userConfig,看到{"name":"张三","age":18}。@ConfigurationProperties获取配置是不需要添加@RefreshScope不重启即可获取修改后的配置值。@Value获取配置是需要添加@RefreshScope才能不重启获取修改后的配置值
。
命名空间用于隔离不同租户的配置。组和数据ID在不同的命名空间中可以是相同的。命名空间的典型场景是不同环境的配置隔离,例如,开发/测试环境和生产环境(配置和服务等)之间的隔离。如果${spring.cloud.Nacos.config.namespace}中未指定命名空间,则使用Nacos的“Public”命名空间。在nacos添加名为dev的namespace,namesapce id是ccf23046-6117-44c2-9e15-a26e1fcfe601
。在bootstrap.properties增加配置:
spring.application.name=consumer
spring.profiles.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=yml
spring.cloud.nacos.config.namespace=ccf23046-6117-44c2-9e15-a26e1fcfe601
spring.cloud.nacos.config.group=myGrourp
自定义组名myGrourp
。在nacos中新增配置,namespace选择dev:
访问http://localhost:7001/consumer/userConfig,看到{"name":"李四","age":18}
标签:Alibab,spring,配置,nacos,consumer,SpringCloud,config,cloud From: https://www.cnblogs.com/shigongp/p/17399348.html