Spring Cloud与Nacos部署Spring Boot项目

news2024/9/20 18:30:54

本文记录一个用于Spring Cloud 和nacos的一个项目配置方案
本文主要通过nacos实现了两点功能:
1、服务的注册与发现
2、nacos的动态配置

在这里插入图片描述
项目中主要包括了nacos-consumer和nacos-provider,一个消费者,一个生产者的角色,消费者负责i调用nacos上的服务,而生产者则负责将服务注册到nacos上。

Nacos配置:

我的nacos是配置在docker中的,并且nacos的版本是2.1.1
在这里插入图片描述
启动nacos后访问网页
在这里插入图片描述
启动nacos-consumer和nacos-provider两个服务后,查看nacos上的服务:
在这里插入图片描述
nacos的配置中心实现:
在这里插入图片描述

生产者代码:

1、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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>nacos-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacos-provider</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <!--SpringCloud的依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--用于配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
<!--        用于服务发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

2、bootstrap.yml

server:
  port: 8070
spring:
  application:
    name: nacos-provider
  cloud:
    # nacos服务地址
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml

  profiles:
    active: dev


3、application.yml

server:
  port: 8070
spring:
  application:
    name: nacos-provider
  cloud:
    # nacos服务地址
    nacos:
      server-addr: 127.0.0.1:8848
      namespace: 76284517-01e8-40c7-a17d-a120e2428498

4、提供服务的Controller类

package com.example.nacosprovider.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalTime;

@RestController
@RefreshScope
public class ProviderController {
    @Value(value = "${server.name}")
    private String serverName;

    @GetMapping("invoke")
    public String invoke() {
        System.out.println(serverName);

        return LocalTime.now() + " invoke";
    }
}

5、启动类

package com.example.nacosprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 *
 * nacos完成
 * 1、服务注册;
 * 2、配置中心功能;动态配置服务
 *
 */
@EnableDiscoveryClient
@SpringBootApplication
public class NacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosProviderApplication.class, args);
    }

}

消费者代码:

1、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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>nacos-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacos-consumer</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <!--SpringCloud的依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

2、application.yml

server:
  port: 8071
spring:
  application:
    name: nacos-consumer
  cloud:
    # nacos服务地址
    nacos:
      server-addr: 127.0.0.1:8848

3、Feigh类,用于调用生产者的接口实现

package com.example.nacosconsumer.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient("nacos-provider")
public interface ProviderFeign {
    @GetMapping("invoke")
    String invoke();
}

4、消费者控制器类

package com.example.nacosconsumer.controller;
import com.example.nacosconsumer.feign.ProviderFeign;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
public class ConsumerController {

    @Resource
    private ProviderFeign providerFeign;

    @GetMapping("/test")
    public String test() {
        return providerFeign.invoke();
    }
}

5、启动类

package com.example.nacosconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;


@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApplication.class, args);
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

旋转目标检测复现-yolov5-obb

复现源码&#xff1a; https://github.com/hukaixuan19970627/yolov5_obb 亲测可行 安装流程&#xff1a; 按照https://github.com/hukaixuan19970627/yolov5_obb/blob/master/docs/install.md 确保安装过程不报错&#xff0c;否则影响后续训练 安装成功即可准备数据集 hf_t…

MySQL复制技术方案——组复制

1&#xff0e;原理 增强半同步复制虽然解决了HA切换之后的幻读问题&#xff0c;也从一定程度上使得主从实例 之间的数据一致性保障得到增强&#xff0c;但是仍然还有很多问题需要解决。 例如&#xff1a; HA切换程度需要依赖于MySQL服务器之外的第三方程序实现&#xff0c;维…

2022年12月安全事件盘点

2022年12月安全事件盘点 一、基本信息 2022年12月安全事件共造成约8327万美元损失&#xff0c;金额数量较上月有所下降。本月RugPull数量基本与上月持平。但临近年底&#xff0c;熊市社媒诈骗等较上个月有所增加&#xff0c;Discord攻击诈骗成为重灾区。另外本月依然有钱包&…

产线工控设备安全现状分析

工控设备安全现状 工业控制系统是支撑国民经济的重要设施&#xff0c;是工业领域的神经中枢。现在工业控制系统已经广泛应用于电力、通信、化工、交通、航天等工业领域&#xff0c;支撑起国计民生的关键基础设施。 随着传统的工业转型&#xff0c;数字化、网络化和智能化的工…

IB课程为什么深受国际学生的喜爱?

凯恩斯是一个被大自然包围的城市。由于得天独厚的地理位置&#xff0c;在凯恩斯随时都可以让你感受到与自然融为一体的亲近与惬意。此外&#xff0c;安全性高也是一大优势&#xff0c;昆士兰当地人对国际学生非常热情友好&#xff0c;在你需要帮助的时候&#xff0c;从来不会感…

C++跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架源码

C跨平台&#xff08;支持LINUX&#xff0c;WIN32&#xff0c;Solaris&#xff0c;MacOS&#xff0c;FreeBSD&#xff09;的网络通信库及服务器编程框架源码 完整代码下载地址&#xff1a;跨平台的网络通信库及服务器编程框架源码 一、描述 1.1、库组成1.2、功能模块组成 1.2.1…

linux配置xrdp

源码 https://github.com/neutrinolabs/xrdp.git xrdp需要安装openssl-devel, pam-devel, libX11-devel, libXfixes-devel, libXrandr-devel ./bootstrap //git submodule下载&#xff0c;需要安装nasm&#xff0c;autoconf生成configure ./configure && make -j4 &a…

区块链与智慧城市

智慧城市的概念涵盖了城市领域的硬件、软件、管理、计算、数据分析等服务的集成。概括地说&#xff0c;就是利用信息通信技术&#xff08;ICT&#xff09;对城市运行各个环节的关键信息进行感知、整合、存储、处理、分析、预测和响应&#xff0c;从而提供智能响应和辅助决策。满…

工业建筑的应急照明系统的设计原则及常见电气设计问题与解决方案

【摘要】:文章根据《消防应急照明和疏散指示系统技术标准》&#xff08;GB513O9-2018&#xff09;,介绍了工业建筑的应急照明系统的设计原则及常见电气设计问题与解决方案。 【关键词】:工业建筑&#xff1b;消防;应急照明&#xff1b;疏散标志;系统设计&#xff1b;安科瑞 李…

p2机器学习基本概念简介

2. 第 1 讲&#xff1a;机器学习基本概念简介上_哔哩哔哩_bilibili 机器学习找一个合适的函数&#xff1a; 随着找的函数不同&#xff0c;机器学习就有了不同的类别&#xff0c;下面了解一些专有名词&#xff1a; Regression&#xff1a;假设找的函数输出是一个数值&#xff…

学习笔记4:数据的存储

目录 一. 整形家族数据在内存中的存储 1.整形数据的原码&#xff0c;反码和补码 2.数据的大小端存储 3.相关练习 1.编写一个函数用于判断当前机器是大端存储类型还是小端存储类型 2.阅读代码判断程序输出内容 3.阅读代码判断程序输出内容 4.阅读代码判断程序输出内容 5.附头文…

5G NR标准 第13章 重传协议

第13章 重传协议 通过无线信道的传输容易出错&#xff0c;例如&#xff0c;由于接收信号质量的变化。 在某种程度上&#xff0c;这种变化可以通过第 14 章中讨论的链路适配来抵消。但是&#xff0c;接收机噪声和不可预测的干扰变化无法抵消。 因此&#xff0c;几乎所有无线通…

数字化时代,聊一聊企业的信息化整合

现如今&#xff0c;企业搭建的OA、ERP、CRM、HR、BI 以及财务软件等软件系统&#xff0c;其数据格式、数据库类别、操作系统、应用系统等不尽相同&#xff0c;位置分散相互独立&#xff0c;甚至有的企业在同一个系统下的财务、办公、销售、生产等系统也各自独立&#xff0c;相互…

蓝牙资讯|消息称苹果正开发 AirPods Lite 耳机

据 9to5Mac 报道&#xff0c;苹果目前正销售四种不同型号的 AirPods&#xff0c;包括第二代 AirPods 到定位更高端的 AirPods Max。虽然 AirPods 已成为非常受欢迎的耳机&#xff0c;但其并不便宜。 据海通国际分析师 Jeff Pu 爆料&#xff0c;苹果目前正在研发新的“AirPods…

SAP入门技术分享二:数据类型

数据类型1.概要2.数据类型的种类&#xff08;1&#xff09;ABAP基本数据类型&#xff08;2&#xff09;局部数据类型&#xff08;3&#xff09;全局数据类型3.DATA语句&#xff08;1&#xff09;TYPE type&#xff08;2&#xff09;LIKE num&#xff08;3&#xff09;VALUE int…

智能车|ROS主控与STM32建立通信软硬件全方位讲解

智能车|ROS主控与STM32建立通信软硬件全方位讲解前言智能车控制器功能通信内容硬件连接软件设置更新电平转换芯片的serial创建设备别名使用设备别名ROS与STM32串口通信代码ROS主控读取stm32发送的数据ROS主控向stm32发送数据前言 通常复杂的机器人会存在多个控制器&#xff0c;…

吴恩达《机器学习》——神经网络与反向传播

神经网络与反向传播1. 神经网络1.1 神经网络的前馈传播1.2 利用反向传播求梯度1.2.1 正则化梯度2. 目标函数&#xff08;损失函数&#xff09;2.1 PyTorch官方文档版本2.2 吴恩达讲解版本2.3 两种版本的区别在哪&#xff1f;2.4 正则化目标函数3. Python实现3.1 梯度校验3.2 封…

hcie-路由引入与控制

关于本实验&#xff1a;本实验主要介绍了路由选择工具ACL和IP-Prefix的配置&#xff0c;路由引入的配置以及路由策略的配置方法及注意事项。 实验目的&#xff1a;掌握路由选择工具的配置方法&#xff0c;路由策略与策略路由的配置与注意事项。 实验组网介绍&#xff1a; 实验…

美颜sdk人脸美妆代码分析、算法流程

美颜sdk人像美妆是非常重要的一个功能&#xff0c;目前深受广大用户喜爱&#xff0c;本篇文章小编将为大家讲解一下美颜sdk人像美妆功能的代码以及算法实现流程。 1、人像美妆算法流程 首先进行妆容模板制作&#xff0c;主要由Photoshop等编辑软件制作&#xff0c;最终由设计…

解微信弹性布局--简单搭建一个页面

Flex布局简介布局的传统解决方案&#xff0c;基于盒状模型&#xff0c;依赖 display属性 position属性 float属性什么是flex布局&#xff1f;Flex是Flexible Box的缩写&#xff0c;意为”弹性布局”&#xff0c;用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Fle…