SpringBoot2.7.8接入nacos详解

概括

开发一个企业级微服务快速开发框架,服务注册和配置中心选择nacos,基于SpringBoot2.7.8版本接入,nacos服务端版本为2.2.2,nacos依赖版本为2021.0.4.0,不同版本运行的结果不同,所以实践之前一定注意版本,以下为详细的接入过程。

项目链接为:zpSmartEnterpriseFramework: 智能企业级开发框架,后续会持续更新其他功能

详细步骤

1.安装nacos服务端

下载地址Releases · alibaba/nacos (github.com)注意选择2.2.2版本,直接下载zip压缩包)

开启鉴权

修改conf/application.properties

 ###开启鉴权
 nacos.core.auth.caching.enabled=true
 ​
 ​
 ### 配置用户名密码
 nacos.core.auth.server.identity.key=nacos
 nacos.core.auth.server.identity.value=nacos
 ​
 ### 自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符
 nacos.core.auth.plugin.nacos.token.secret.key=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=

放到服务器或者本地,命令单机启动

 sh bin/startup.sh -m standalone
 .\bin\startup.cmd -m standalone

访问:默认ip:8848/nacos进入后台管理页面,账号密码按照上面设置的即可

增加配置:新建命名空间,对应命名空间增加配置,配置名为应用名(spring.application.name).yaml,编写对应内容

也可以不新建命名空间,把配置都放在public,不过还是建议给自己的应用建一个命名空间,配置不容易乱

2.引入依赖

 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.7.8</version>
 </parent>
 ​
 ​
 <!-- nacos -->
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     <version>${nacos.version}</version>
 </dependency>
 ​
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     <version>${nacos.version}</version>
 </dependency>
     
 <!-- bootstrap配置,一定不要忘记这个依赖,负责无法读取bootstrap配置来指定配置空间,默认使用public命名空间的可以不引入 -->    
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-bootstrap</artifactId>
     <version>${spring-cloud-bootstrap.version}</version>
 </dependency>
     
 <nacos.version>2021.0.1.0</nacos.version>
 <spring-cloud-bootstrap.version>3.1.1</spring-cloud-bootstrap.version>

3.配置文件中新增nacos信息

两种配置文件均可,application.yaml+bootstrap.properties或者bootstrap.yaml+bootstrap.properties.具体地址和命名空间等信息按实际情况修改

如果指定命名空间,一定要加bootstrap.properties配置设置命名空间,注意配置的值是命名空间的ID,而不是名称,如果不显式设置命名空间会默认读取public命名空间

application.yaml
 server:
   port: 9300
 spring:
   application:
     name: user-center
   cloud:
     nacos:
       serverAddr: zp.com.cn:8848
       username: nacos
       password: nacos
       discovery:
         namespace: sef
       config:
         file-extension: yaml
   config:
     import:
       - nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
bootstrap.properties
 spring.cloud.nacos.config.namespace=sef
 spring.cloud.nacos.config.serverAddr=zp.com.cn:8848
 spring.cloud.nacos.config.username=nacos
 spring.cloud.nacos.config.password=nacos
bootstrap.yaml
 server:
   port: 9300
 spring:
   application:
     name: user-center
   cloud:
     nacos:
       serverAddr: zp.com.cn:8848
       username: nacos
       password: nacos
       discovery:
         namespace: sef
       config:
         file-extension: yaml

其他功能

共享配置

几个应用一起使用一套配置,例如redis的配置,避免了重复配置

config下指定data-id和group

 spring:
   cloud:
     nacos:
       serverAddr: zp.com.cn:8848
       username: nacos
       password: nacos
       discovery:
         namespace: sef
       config:
         file-extension: yaml
         shared-configs:
           - data-id: common.yaml
             group: DEFAULT_GROUP

热更新

为了让配置自动更新生效,可以在启动类上添加@RefreshScope注解,或在具体需要刷新的Bean上使用该注解。

配置中心修改xxx,接口获取到的值也会对应更新

 @SpringBootApplication
 @EnableDiscoveryClient
 public class Application {
     public static void main(String[] args) {
         SpringApplication.run(Application.class, args);
     }
 }
 ​
 @RestController
 @RefreshScope
 public class DemoController {
     @Value("${xxx}")
     private boolean xxx;
 ​
     @RequestMapping("/get")
     public boolean get() {
         return xxx;
     }
 }

过程中遇到的问题

版本不适配

官方文档版本说明:版本说明 · alibaba/spring-cloud-alibaba Wiki (github.com)

没有2.7.8版本SpringBoot说明,按照最接近的2.6.13的版本配置报错,慢慢试得出这套搭配

配置中心不能指定命名空间

新建bootstrap.properties指定

参考资料

nacos官方使用文档:Nacos 快速开始 | Nacos 官网

spring-cloud-alibaba官方使用文档:快速开始-阿里云Spring Cloud Alibaba官网 (aliyun.com)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值