一、注册与发现
1.引入依赖
最好放在公用项目common中
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.在微服务配置中配置 Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
3.使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallUserApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallUserApplication.class, args);
}
}
4.服务端
直接下载:Nacos Server 下载页
解压后点击bin目录下startup.cmd
登录管理页面:http://localhost:8848/nacos
二、配置中心
1.引用依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在resources目录下创建一个bootstrap.properties 文件,在文件中配置 Nacos Config 元数据
spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3.打开nocos平台http://localhost:8848/nacos,在配置列表中添加配置
4.完成上述步骤后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用 @Value 注解来将对应的配置注入到 SampleController 的 userName 和 age 字段,并添加 @RefreshScope 打开动态刷新功能
@RefreshScope
class SampleController {
@Value("${user.name}")
String userName;
@Value("${user.age}")
int age;
}
5.命名空间,可以在bootstrap.properties配置文件中配置使用哪个命名空间(默认是public)
spring.cloud.nacos.config.namespace=c85052d6-70cc-4569-9d1d-060dde103939
6.可以加载多个配置
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#命名空间
spring.cloud.nacos.config.namespace=30d0481a-4029-491d-9556-b62e2dc390e4
#加载多个配置
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true