Nacos安装详见:Spring Cloud 系列之 Nacos 配置中心
一、前言
上一篇已经讲解了怎样安装安装、启动、配置 Nacos
,这篇我们讲解如何在项目中使用 Nacos
。
还不了解 Nacos
的详见:Spring Cloud 系列之 Nacos 配置中心
在集成 Nacos
之前,首先我们要先创建一个 Spring Boot
项目:IDEA 创建 SpringBoot 项目
二、Nacos集成
1、引入Nacos依赖
<dependencies>
<!-- nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependencies>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
注:Spring Boot版本要低于2.4,否则启动应用会报错。
2、设置Nacos配置
项目中默认配置文件是 application.properties
,Nacos
配置加在此配置文件中的话,应用启动会报连接 Nacos
失败,我们需要创建 bootstrap.properties
或 bootstrap.yml
配置文件(添加任意一个即可),下面我们以 bootstrap.properties
为例:
spring.application.name=apm-mobile-android
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos
spring.cloud.nacos.server-addr=10.0.7.115:18117
spring.cloud.nacos.discovery.namespace=PROD
spring.cloud.nacos.config.namespace=PROD
spring.cloud.nacos.config.timeout=3000
spring.cloud.nacos.config.refresh-enabled=true
spring.cloud.nacos.config.group=apm
spring.cloud.nacos.config.prefix=${
spring.application.name}
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.shared-configs[0].group=apm
spring.cloud.nacos.config.shared-configs[0].data-id=apm-mobile-android.properties
spring.cloud.nacos.config.shared-configs[0].refresh=true
spring.liquibase.enabled=false
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
3、加载Nacos配置中心配置项
在初始化类中添加 @EnableDiscoveryClient
注解即可:
package com.example.springbootdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class SpringbootdemoApplication {
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token class-name">SpringApplication</span><span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token class-name">SpringbootdemoApplication</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> args<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">new</span> <span class="token class-name">BootstrapManager</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
4、Nacos集成验证
Nacos配置如下:
启动应用,然后访问:http://localhost:8085/hello
出现如下界面说明加载Nacos配置成功。
5、Nacos配置中心配置项动态生效
需要在配置对象中添加 @RefreshScope
注解,然后重启应用。
package com.example.springbootdemo.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Data
@Component
@Configuration
@RefreshScope
public class GlobalConfig {
<span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"${data.domain:http://10.0.0.1:18080}"</span><span class="token punctuation">)</span>
<span class="token keyword">private</span> <span class="token class-name">String</span> dataDomain<span class="token punctuation">;</span>
<span class="token annotation punctuation">@Value</span><span class="token punctuation">(</span><span class="token string">"${log.level:DEBUG}"</span><span class="token punctuation">)</span>
<span class="token keyword">private</span> <span class="token class-name">String</span> logLevel<span class="token punctuation">;</span>
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
重启后,访问:http://localhost:8085/hello
将 Nacos
配置中的 log.level
修改为 DEBUG
,然后重新访问:http://localhost:8085/hello,出现如下界面说明 Nacos
配置动态生成成功。
</article>