微服务搭建----springboot接入Nacos2.x

springboot接入Nacos2.x

nacos之前用的版本是1.0的,现在重新搭建一个2.0版本的,学如逆水行舟,不进则退,废话不多说,开搞

1、 nacos2.x搭建

1,首先第一步查询下项目之间的版本对照,不然后期会出现各种无法预测的版本冲突问题,今天就是复现了,可以参考链接:
版本对照

2,下载nacos,可以通过下方下载地址下载对应的版本
nacos下载地址

3,将下载之后的文件解缩后

4,解压成功后,进入bin文件通过cmd执行命令:startup.cmd -m standalone,然后执行成功了,通过链接进入了nacos后台

http://localhost:8848/nacos


5,很简单是不是,但是这里有个小坑,2.4.3的这个版本,初始化是没有账号密码的 ,一开始我是有下载1.x的其他版本,他是需要输入账号密码的,初始账号密码是,nacos\nacos,然后很操蛋的事情来了,因为是停留在登录页面,所以他是要求你输入密码,但是2.4.3没有初始账号密码,所以点击登录一直提示账号密码失败,当时很纳闷,没改过密码呀,怎么就是不对呀,纳闷了好久,后面不小心关了链接,重新点击http://localhost:8848/nacos,他进去了,他进去了!!!

6,回到正题,密码怎么办呢?那就开启鉴权,把账号密码加起来,再把数据库也建立进去,配置如下

java 复制代码
##修改conf/application.properties文件

nacos.core.auth.enabled=true
# 必须设置
# 用于在请求 nacos 时,请求头添加key:value信息,可通过验证
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example
# 设置用于生成token的密钥, 需要原文不低于32位的Base64加密的结果, 
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

7,开启之后,直接通过:http://localhost:8848/nacos,会有如下的提示,然后首次登录也是设置密码

2,构建springboot项目,使用的maven进行构建

pom文件

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>Demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Demo</name>
    <description>Demo</description>

    <properties>
        <java.version>1.8</java.version>
        <spring.version>4.2.5.RELEASE</spring.version>
        <nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Spring Boot Test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!-- JUnit 5 (Jupiter) -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <!-- nacos服务注册/发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.9.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2、配置文件配置

1,这里有个点需要注意的是,配置文件用bootstrap.yml进行配置,而不是application.yml,为什么呢?因为如果使用的是application进行配置的话,虽然也能注册到nacos去,但是nacos的配置文件是无法读取成功的

yaml 复制代码
#应用服务名称
server:
  port: 8081
spring:
  application:
    name: order-core
  profiles:
    active: test #可选值dev test uat prod
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #服务注册中心地址
        namespace: ${spring.profiles.active} #指定命名空间
        username: nacos #用户名
        password: nacos #密码
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr} #服务配置中心地址
        namespace: ${spring.profiles.active} #指定命名空间
        username: ${spring.cloud.nacos.discovery.username} #用户名
        password: ${spring.cloud.nacos.discovery.password} #密码
        file-extension: yml #配置文件后缀
        shared-configs:
          - data-Id: springcloud.yml
            refresh: true
          - data-Id: datasource.yml
            refresh: true
management:
  health:
    defaults:
      enabled: false

3,项目启动成功后,就可以在nacos的服务列表中看到了

4,验证配置文件是否能读取到

java 复制代码
package com.example.demo.controller;

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

/**
 * @author:Deng
 * @date: 2024-11-27 15:42
 * @remark:
 */
@RestController
public class TestController {
   
    @Value("${dd.aa}")
    private String aa;

    @RequestMapping(value = "/get", method = GET)
    @ResponseBody
    public String get() {
        return aa;
    }
}


4,再记录一点,当nacos和springboot或者springclound版本存在冲突时,会在启动时出现403的错误,出现这个错误时,可根据1.1提到的进行版本对照修改,以及在配置配置文件时,命名空间的data-Id也要一一对应,下一步就是搭建服务间远程调用OpenFeign

相关推荐
宋冠巡1 小时前
Spring Boot Validation 封装自定义校验注解和校验器(validation-spring-boot-starter)
spring boot·参数校验·validation
Allen_LVyingbo2 小时前
低代码与微服务融合在医疗集团中的补充应用探究
职场和发展·架构·健康医疗
( •̀∀•́ )9205 小时前
Spring Boot 启动流程详解
java·spring boot·后端
paterWang5 小时前
小程序-基于java+SpringBoot+Vue的音乐播放器小程序设计与实现
java·spring boot·小程序
运维&陈同学5 小时前
【Dubbo03】消息队列与微服务之dubbo-admin 二进制与编译安装
linux·运维·服务器·后端·微服务·云原生·架构·dubbo
K丶one6 小时前
Spring boot + Vue2 整合人脸识别登录
java·spring boot·spring
baozhengw6 小时前
IntelliJ+SpringBoot项目实战(23)--整合RabbitMQ
spring boot·rabbitmq·java-rabbitmq·消息中间件
晚风 -6 小时前
SprinBoot整合KafKa的使用(详解)
spring boot·分布式·kafka
chusheng18407 小时前
Java基于SpringBoot+Vue的企业客户管理系统(附源码+lw+部署)
java·vue.js·spring boot·企业客户管理系统·企业客户管理
johnny2337 小时前
Spring Boot自动配置原理
spring boot