springBoot、springCloud实现配置部署本地nacos

        本节主要将如何将springBoot、springCloud等项目的配置文件部署nacos,以实现对配置文件进行一个统一的管理。企业项目多以nacos进行项目配置管理。

        这节同时也是给实现docker+nacos+mysql+Boot/Cloud打下基础

1 nacos本地安装

1.1 下载路径

        直接通过官网进行下载:Nacos Server 下载 | Nacos 官网

        nacos的版本有很多,对于不同的版本可能会有略微的不同,可以根据实际的使用情况进行选择下载。

        本次选择的版本是:v1.4.6。

1.1.1 点击链接到达官网

        选择发布历史。

 1.1.2 下拉找到版本(演示选择v1.4.6)

        点击直接下载压缩包,等待下载完成解压。

1.2 解压配置数据库

        在进行这一步,需要先把数据库(MYSQL)环境安装配置好,这个可以去自行学习。

         在对nacos启动之前需要进行数据库的配置,主要用于存储对nacos进行操作时所产生的数据或者配置文件信息等。

        将文件解压后,可以移动到想要存储的地方。打开目录如下图:

1.2.1 利用cmd完成数据库处理

        第一步:找到/conf/nacos-mysql.sql文件里的sql脚本,打开编辑,在开头处加入如下内容:

DROP DATABASE IF EXISTS `nacos_config`;
CREATE DATABASE `nacos_config` DEFAULT character set utf8mb4;
SET names utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE `nacos_config`;

以下是对这段 SQL 语句的解释:

        `DROP DATABASE IF EXISTS `nacos_config`;`:如果存在名为“nacos_config”的数据库,则删除该数据库。这一步是为了确保在创建新的数据库之前,没有同名的旧数据库存在,避免可能的冲突。

        `CREATE DATABASE `nacos_config` DEFAULT character set utf8mb4;`:创建一个名为“nacos_config”的数据库,并设置默认字符集为 utf8mb4。utf8mb4 字符集可以支持更多的字符,包括一些特殊字符和 emoji 等。

        `SET names utf8mb4;`:设置当前会话的字符集为 utf8mb4。这确保在后续的操作中,数据的存储和读取都使用这个字符集。

        `SET FOREIGN_KEY_CHECKS = 0;`:关闭外键检查。这在某些情况下可以加快数据库的操作速度,尤其是在进行大量数据导入或结构调整时。

         `USE `nacos_config`;`:选择使用刚刚创建的“nacos_config”数据库,后续的 SQL 操作将在这个数据库上进行。 

        第二步:打开cmd窗口, 登录数据库,导入该SQL文件 

mysql -uroot -proot
source D:\nacos\nacos\conf\nacos-mysql.sql 

        执行成功后,可以进行查询,查询如下图:(表示导入数据库成功)

第三步:打开/conf/application.properties里打开默认配置,并基于你当前环境配置要连接的数据库,连接数据库时使用的用户名和密码(假如前面有"#"要将其去掉):连接本地数据库。

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

         添加完成后,保存退出即可完成数据库的配置。

1.2.2 手动实现数据库创建(利用到数据库可视化工具:Navicat Premium Lite 17)

        第一步:利用Navicat Premium Lite 17连接本地数据库,然后创建一个数据库,库名为:nacos_config (这个可以自定义,修改application.properties不搞错就行)。如下图:这是我创建的数据库名为:nacos_docker ,不会有影响

                第二步:把直接把/conf/application.properties里面的内容复制出来,在nacos_config数据库下建立查询,并将复制的内容粘贴到查询,并执行查询实现表的创建。如图所示:

        运行后将会创建需要的表。

        第三步:这一步和 1.2.1 利用cmd完成数据库处理 的第三步相同

2 nacos 本地启动

2.1 设置启动模式

        nacos的启动模式有单机部署()和集群搭建()两种模式,本次主要以单机部署模式进行启动,集群搭建模式在本地直接启动会报错,就不进行过的的讲解了

2.2.1 单机部署(standalone) 

        第一种启动方式:在目录:\bin 下打开cmd 命令提示符,执行下面语句。

startup.cmd -m standalone

        第二种启动方式:打开 \bin\startup.cmd 进行编译,修改如图:

        MODE="cluster" 修改为 MODE="standalone"

        修改完成后,保存,直接点击 startup.cmd 启动即可。

        启动界面如下:(复制地址在浏览器打开即可)

2.2 启动界面介绍

        复制链接在浏览器打开后,可能需要登录进行(登录账号和密码默认:nacos)也可能直接进入主要界面,根据实际情况进行操作。

        登录界面:

        

        主界面:

2.3 创建命名空间

        要将项目连接到nacos需要一个具有唯一表示的命名空间,相关的配置都将部署在这个命名空间下面,命名空间创建如下:

         创建成功后可以在命名空间列表看到刚刚创建的命名空间,如图:命名空间ID 就是项目连接nacos的关键。

        列表中的配置数,就是在命名空间下面创建的配置文件数。

 2.4 创建配置文件

        在完成命名空间的创建后,就可以进行配置文件的创建了,配置文件查看如图:(配置文件在讲了springboot/springcloud 项目配置连接nacos时在演示创建

3 创建Boot或者Cloud项目

        项目的具体创建就不进行过多的讲解,下面主要说一下需要导入的包和注意事项。

        演示项目结构如图:(需要注意的已经用红框显示)

3.1 pom.xml 导入相关的包

        在导包时,需要注意包的版本和项目的版本是否兼容,这个需要自行查询一下。

        要连接nacos,需要导入nacos-discovery和nacos-config两个nacos的包。

本次的项目版本是:2.1.6.RELEASE

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring-boot.version>2.1.6.RELEASE</spring-boot.version>
</properties>

导入  nacos-discovery 的版本是:2.1.4.RELEASE

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>

        spring-cloud-starter-alibaba-nacos-discovery 是一个 Spring Cloud Alibaba 的依赖项,主要用于集成 Nacos 服务发现功能。

        Nacos 是一个动态服务发现和配置管理平台,允许微服务应用程序发现彼此并进行注册。

        discovery:主要用于服务注册与发现。使用 Nacos,服务提供者可以将自己的服务信息(如地址、端口等)注册到 Nacos 注册中心,而服务消费者可以从注册中心查询可用的服务实例。这样,微服务之间能够很方便地进行通信。

 导入 nacos-config 的版本是: 2.1.4.RELEASE

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>

        config:通过 Nacos,可以集中管理应用的配置,支持动态配置和热更新,简化了配置的管理和维护工作。

个人通俗理解(不喜勿喷,轻点喷):  

        nacos-discovery:用于被nacos发现,并进行识别,相当于进行登录验证。

        nacos-config:用于管理配置资源,相当于登录后,对该账号文件图片进行管理。

        连接nacos,这两个配置都需要导入。

补充导入:可能会因为项目版本的原因无法识别 bootstrap.yml 类的文件,所以可以提前导入包:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>3.1.2</version>
</dependency>

        spring-cloud-starter-bootstrap 主要是用来增强 Spring Boot 应用程序的配置处理能力,尤其是在使用 Spring Cloud 时,它对于微服务间的配置管理和初始化至关重要。

        具体的pom.xml 文件内容如下,有一些是 包是测试项目需要导的,个人可以根据实际情况进行导入,看情况选择对应的包,下面的内容仅提供参考。

<?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>
    <groupId>com.xjj</groupId>
    <artifactId>file_ata_processing</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <description>file_ata_processing</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.1.6.RELEASE</spring-boot.version>
    </properties>

    <packaging>jar</packaging>

    <dependencies>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.4.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.1.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.2</version>
        </dependency>

        <!-- MyBatis Plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3</version> <!-- 根据实际情况选择版本 -->
        </dependency>

        <!-- MySQL 数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version> <!-- 根据实际情况选择版本 -->
        </dependency>

        <!--lombok⼯具-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.16</version>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- MyBatis Plus 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3</version> <!-- 根据实际情况选择版本 -->
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>4.4</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-csv</artifactId>
            <version>1.8</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

3.2 bootstrap 配置文件准备

        因为已经使用nacos,所以我们项目的配置文件都可以放到nacos上面,以便快速管理等。因此,bootstrap.yml ,bootstrap-xjj.yml 都只是用于配置nacos的连接或启动的对应的开发环境(生成环境,开发环境等)

        创建两个yml文件,bootstrap.yml ,bootstrap-xjj.yml,如图所示:

 bootstrap.yml内容:

spring:
  main:
    allow-bean-definition-overriding: true
  application:
    name: file_ata_processing
  profiles:
    active: xjj

这段代码是具体含义如下:

1. spring: 此部分用于配置 Spring 框架的相关设置。

        main: 这个部分里面的设置与 Spring Boot 的主应用程序相关。
             allow-bean-definition-overriding: 设为 `true` 允许 Bean 定义的重写,这意味着如果有多个同名 Bean 定义,后定义的会覆盖前面的。这在某些场景下(如测试或集成)可能是有用的。
2. application: 主要用于设置应用的属性。

        name: 应用的名称,这里设置为 `file_ata_processing`。这是一个用于标识应用的简短字符串。(注意:这个名称要和在nacos上面添加配置文件时的名称一致,用于识别)

3. profiles: 这部分用于配置 Spring 的环境特性。

        active: 指定当前激活的配置文件,这里是 `xjj`,表示应用会加载与测试环境相关的配置。(表示启动bootstrap后面xjj的配置文件)。

          bootstrap-xjj.yml内容

 bootstrap-xjj.yml内容:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        namespace: 5152f121-08be-42a1-b769-df300f3e0f28
        auto-register: true
      config:
        server-addr: localhost:8848
        file-extension: yml
        namespace: 5152f121-08be-42a1-b769-df300f3e0f28
        #公共配置文件
        shared-configs: file_ata_processing.yml
  1. spring.cloud.nacos.discovery: 配置与 Nacos 服务发现相关的设置。

    • server-addr: 指定 Nacos 服务器的地址,这里是 localhost:8848,表示 Nacos 服务运行在本地的 8848 端口。(默认是8848接口
    • namespace: 指定 Nacos 的命名空间,用于隔离不同的服务和配置。这里使用的是一个 UUID 形式的命名空间。(这里填的就是在nacos创建命名空间时生成的命名空间ID)(根据自身创建的命名空间,修改ID
    • auto-register: 设为 true 表示应用会自动向 Nacos 注册自己,从而使 Nacos 知道这个服务的存在,其他服务可以通过 Nacos 发现它。
  2. spring.cloud.nacos.config: 配置与 Nacos 配置中心相关的设置。

    • server-addr: 指定 Nacos 配置中心的地址,这里也是 localhost:8848,与服务发现的配置相同。
    • file-extension: 配置文件的扩展名,这里是 yml,表示使用 YAML 格式的配置文件。(配置文件是yml文件
    • namespace: 配置中心使用的命名空间,必须与服务发现中指定的命名空间一致。用于隔离不同的配置。(这里填的就是在nacos创建命名空间时生成的命名空间ID)(根据自身创建的命名空间,修改ID
    • shared-configs: 指定共享的配置文件名。这里是 file_ata_processing.yml,表示从 Nacos 配置中心加载这个配置文件的内容。(如果有多个项目,对应一些公共的配置,可以写在同一个文件内,统一进行读取。这里启动只有一个项目,就直接用对应的资源名称

        完成上面两个yml文件,就基本完成了连接nacos的配置。

4 在nacos上创建对应的资源文件

        本测试项目连接了数据库,就将数据库的连接信息和启动端口号的配置文件放到nacos进行测试。

        启动nacos,如下图,进行配置添加。(找到之前创建的test-local的命名空间,在该空间下进行添加配置文件)

        点击 + 后,添加一些配置,如下图所示:

注意:

        Date ID: 后缀一定要加上.yml

        配置格式:YAML

         当完成配置后,点击发布就可以实现配置了,可在对应列表下查看配置文件。如图:

        到这里,nacos上需要进行操作的基本结束了。

        注意:在 bootstrap-xjj.yml 中,要根据自身创建的命名空间ID进行填写,不要直接使用给出实例,这样将会无法连接。

5 启动项目

        在项目启动之前,需要添加@SpringCloudApplication 这个注解。

        注意:在项目启动前在 bootstrap-xjj.yml 中,要根据自身创建的命名空间ID进行填写,不要直接使用给出实例,这样将会无法连接。

 @SpringCloudApplication

这个注解是一个复合注解,通常用于 Spring Cloud 应用程序的入口类中。它结合了以下三个注解的功能:

  1. @SpringBootApplication: 启用 Spring Boot 的自动配置、组件扫描和属性配置。
  2. @EnableDiscoveryClient: 启用 Spring Cloud 服务发现客户端的功能,允许应用程序注册到服务发现服务器(如 Eureka、Nacos、Consul)并发现其他服务。
  3. @EnableCircuitBreaker: 启用断路器功能,通常用于实现容错机制,比如使用 Hystrix 来处理服务调用的熔断和回退逻辑。

这样,@SpringCloudApplication 注解可以帮助简化配置,使得应用程序同时具备 Spring Boot 和 Spring Cloud 的功能。

        项目启动后,查看启动信息,是否报错,没有报错就启动成功,报错就根据错误进行修改,以上是个人的经验,无法兼顾太多,有不懂的可以直接留言。 

        启动成功的部分启动信息如图:

       

        查看启动是否成功,还可以去到 nacos 界面的服务管理->服务列表中查看刚启动的服务,如下图:(当看到有记录,就证明启动成功了)

6 测试读取数据库数据的接口

        在本测试项目中,定义了接口http://localhost:3022/docker/test1,来读取数据库中某张表的条数,接口如图:

访问接口返回数据如图:(表示已经成功读取到数据库,并放回条数,证明已经实现读取nacos上面的配置,进而证明成功连接上nacos

7 总结

        以上就是项目实现连接nacos的全部过程。

        上面的只是在开发过程中,总结的一些开发经验,可以根据自身的情况进行学习,如有不对,可以留言进行讨论修改。

        这个只是为了实现docker+nacos+mysql框架项目的部署打下nacos方面的基础,在后面将会根据个人的经验进行完善这一个整体框架的开发。  

        感谢各位的支持。

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringCloud是一个开源的微服务框架,旨在简化构建分布式系统的复杂性。它提供了一组工具和组件,使开发者能够快速构建和部署分布式应用程序。 SpringBoot是一个用于快速开发Java应用程序的框架,它简化了配置部署过程。通过使用自动配置和准备的开发环境,SpringBoot可以让开发者专注于应用程序的业务逻辑而不是繁琐的配置Nacos是一个分布式的服务发现和配置管理平台。它可以帮助开发者轻松地实现微服务架构中的服务注册、发现和配置管理。Nacos提供了强大的服务发现和注册功能,支持动态配置管理,并具有容错和高可用性的特性。 结合起来,SpringCloudSpringBootNacos可以实现快速构建和部署分布式系统的目的。SpringCloud提供了一组工具和组件,使得开发者能够轻松实现服务注册和发现、路由和负载均衡等功能。而SpringBoot简化了开发过程,通过自动配置和准备的开发环境,开发者可以快速搭建和开发应用程序。Nacos则提供了服务注册、发现和配置管理功能,使得开发者可以更方便地进行服务治理。 总之,SpringCloudSpringBootNacos是三个非常重要的框架和平台,它们的结合可以帮助开发者更快速、更方便地构建和部署分布式系统。通过使用这些工具和组件,开发者可以专注于业务逻辑的开发和实现,而无需过多关注系统的复杂性和细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值