SpringCloudAlibaba实战-快速上手

news2024/11/15 11:11:51

写在前面:在学习了很多理论知识后,虽然对理论知识有了个概念,但是搭建项目的配置步骤做的少,还是不熟,方便日后复习,在此记录一下。

一、创建父项目

1. 创建项目基础信息

1. 选择项目基础信息

  • 服务器URL:https://start.aliyun.com/ (建议)
  • 名称:小写,建议中线隔开
  • 类型:Maven

2.选择依赖

        因为创建的是springcloudAlibaba项目,有固定的版本对应,需要自己调整,所以这里的版本默认就可以,依赖也不用选,后面根据需要添加就行。

3.点击创建后项目如下

4.删除无关项

构建微服务,这个项目作为父项目,将无关的结构删除,保留项目的pom.xml即可。

2.设置项目版本

1. 查看版本关系

版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHubSpring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware. - 版本说明 · alibaba/spring-cloud-alibaba Wikiicon-default.png?t=N7T8https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E/662c076ef8f4af0ec94caa86ade169442684904f

2.版本选择

        找到分支部分,选则一个Spring Cloud Alibaba Version,则可以确定Spring Cloud Version和Spring Boot Version。

        再往下滑动,可以看到组件版本关系,这样就可以确定适配的各组件版本了。当然这个在maven中不用自己显示配置, 都在上面集中管理了。下面这些,只是组件下载时,我们需要回来参照,,文章后面以nocos为例说明。

3. 配置父pom.xml

   这里我选择版本对应如下:

  •         <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
  •         <spring.boot.version>2.3.2.RELEASE</spring.boot.version>
  •         <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
<?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.xixijun</groupId>
    <artifactId>spring-cloud-blog</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-cloud-blog</name>

    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
        <spring.boot.version>2.3.2.RELEASE</spring.boot.version>
        <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <!--
        作用:子maven中需要显示声明,如果是dependency里面的,就不需要显示申明
    -->
    <dependencyManagement>
        <dependencies>
            <!-- SPRINGBOOT的版本管理-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba版本管理-->
            <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>
            <!-- spring cloud 版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.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>
        </plugins>
    </build>

</project>

pom.xml说明;

properties中配置统一版本管理

在propertie中可以自定义变量,来进行版本管理

一般设置为:artifactId.versiom。

引用:<version>${artifactId.versiom}</version>

示例:

<properties>
    <spring.boot.version>2.3.2.RELEASE</spring.boot.version>
</properties> 

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

dependencyManagement集中化的依赖管理

        在Maven中,dependencyManagement 元素是用来为所有子项目提供一个集中化的依赖管理。当你有多个模块或项目,并且它们共享相同的依赖时,dependencyManagement 非常有用。

具体来说,dependencyManagement 的作用有以下几点:

  1. 版本管理:你可以在一个中心的地方管理所有依赖的版本号,这样当你需要更新版本时,只需要在一个地方修改。

  2. 范围(Scope)管理:你可以设定依赖的范围(如 import, compile, runtime, test 等)。

  3. 排除不需要的传递依赖:通过 <exclusions> 标签,你可以集中管理哪些传递依赖应该被排除。

  4. 简化依赖声明:在子模块中,你只需要指定依赖的 artifactIdgroupId,而不需要指定版本号或其他信息,因为它们会继承自父项目中的 dependencyManagement

type属性

  type 属性用于指定依赖的类型。默认情况下,这个值是 jar,意味着依赖是一个Java ARchive文件。其他可能的类型包括:

  • pom:Project Object Model 文件。这种类型通常用于从其他 POM 文件中导入配置。
  • war:Web Application Archive 文件,用于Java web应用程序。
  • ear:Enterprise Archive 文件,用于Java EE应用程序。
  • ejb:Enterprise JavaBeans Archive 文件。
  • rar:Resource Adapter Archive 文件,用于Java EE连接资源。
  • par:Persistence Archive 文件,用于持久化模块。
  • 自定义类型:也可以定义自己的类型。

Scope属性

  scope 用于控制依赖的可见性和传递性。常见的范围有 compile, provided, runtime, test, system

  • compile:默认范围,依赖在所有的生命周期阶段都可用。
  • provided:假定 JDK 或者容器已提供该依赖,仅用于编译和测试,不会打包。
  • runtime:不需要用于编译,但是需要在运行时。
  • test:只在测试阶段使用。
  • system:类似于 provided,但你需要显式地提供依赖的路径。

二、创建子项目

以nacos为例,创建子项目。

1. 创建order-nacos

1. 新建模块

2.模块设置

3.依赖选择

        后面还需要手动更改pom,所以直接创建即可。

 Idea中模块不高亮问题

 原因:曾经创建过类似的名称的模块,然后删除了,所以被maven给排除了。

解决办法:

  1. 打开设置
  2. 构建、执行、部署
  3. 构建工具
  4. Maven
  5. 已忽略文件
  6. 取消勾选模块后点击应用即可

4. 设置模块pom

           这里的parent设置为父项目的工件信息,然后导入nacos的依赖,因为父项目中集中管理了版本,所以不需要显示设置版本。

<?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>com.xixijun</groupId>
        <artifactId>spring-cloud-blog</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <groupId>com.xixijun</groupId>
    <artifactId>order-nacos</artifactId>

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

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

   父项目中引入模块,刷新模块即可:

5. 填充代码

(1)项目结构

(2)OrderController.java

package com.xixijun.order.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/add")
    public String add(){
        System.out.println("下单成功!");
        String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
        return "hello world = " + msg;
    }
}

 (3) OrderApplication.java

package com.xixijun.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class);
    }

    /**
     * 需要家LoadBalanced注解,加载负载均衡器,否则会报错
     * @param builder
     * @return
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        RestTemplate restTemplate = builder.build();
        return restTemplate;

    }
}

(4) application.yml

server:
  port: 8020
  #应用名称
spring:
  application:
    name: order-service
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        username: nacos
        password: nacos
        namespace: public

2. 创建stock-nacos

        创建步骤同order-nacos一致,更换名称即可。

1. 填充代码

(1)项目结构

(2)StockController.java

package com.xixijun.stock.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/stock")
public class StockController {

    @Value("${server.port}")
    String port;

    @RequestMapping("/reduct")
    public String reduct(){
        System.out.println("扣减库存!");
        return "扣减库存! port = " + port;
    }
}

因为stock-nacos没有调用服务,所以没有配置restTemplate。

(3)application.yml

server:
  port: 8021

  #应用名称
spring:
  application:
    name: stock-service
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        username: nacos
        password: nacos
        namespace: public

三、配置Nacos

        nacos配置,可以选择多种方式安装,这里快速上手选择使用window单机版。

1. 选择版本

在本文第一章创建父项目的第二小节设置项目版本时,我们引入了项目的版本,其中指定了适配的组件版本,因为我选择的是2.2.6.RELESE版本,所以对应的nacos版本选择1.4.2。

2. 下载nacos

(1)下载地址

Release 1.4.2 (Apr 29th, 2021) · alibaba/nacos · GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Release 1.4.2 (Apr 29th, 2021) · alibaba/nacosicon-default.png?t=N7T8https://github.com/alibaba/nacos/releases/tag/1.4.2(2)下滑到尾部点击下载zip文件

(3)解压后文件内容

(4)修改配置

进入bin目录,修改startup.cmd.将下面的cluster(集群模式),修改为standalone(单机模式)。保存后退出。

(5)输入cmd,回车

(6)输入startup.cmd

出现successfully则说明运行成功,如下所示:

(7)客户端界面访问

网址:http://localhost:8848/nacos/icon-default.png?t=N7T8http://localhost:8848/nacos/#/serviceManagement?dataId=&group=&appName=&namespace=&pageSize=&pageNo=默认账号:nacos

默认密码:nacos

简单介绍一下,当服务模块启动后,注册中心就会出现启动的服务,如果服务模块没有配置正确,就不会被加载进来。查看地址:服务管理\服务列表。

四、启动项目

1. 启动 OrderApplication 和 StockApplication

统一管理面板

 如下图所示,可以查看统一管理面板,第一次进入可能没有,需要点击加号\设置运行配置类型\选择Spring Boot选项即可。

2. 查看服务注册中心

        如下所示,服务都正确加载,项目是可以的。

3. 访问地址项目功能

网址:http://localhost:8020/order/add

        至此,一个快速应用springcloudAlibaba的项目搭建完毕,恭喜道友在学习之路上更进一步。这学习大道茫茫,然而你我都是这条路上的苦行僧,在此留下心得,祝你我都能修的圆满。咱们下一个路口(BUG)见!

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

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

相关文章

【OpenCV实现图像的几何变换】

文章目录 概要&#xff1a;OpenCV实现图像的几何变换、图像阈值和平滑图像变换小结 概要&#xff1a;OpenCV实现图像的几何变换、图像阈值和平滑图像 使用OpenCV库进行图像处理的三个重要主题&#xff1a;几何变换、图像阈值处理以及图像平滑。在几何变换部分&#xff0c;详细…

第二章 基于模型的系统工程 P1|系统建模语言SysML实用指南学习

仅供个人学习记录 基于文档与基于模型的方法对比 MBSE潜在优势 增进沟通&#xff1a; 团队与利益相关方共享对系统的理解从系统多个维度展示和集成视图的能力 降低开发风险&#xff1a; 持续需求确认与设计验证对系统开发做精确成本估计 提高质量&#xff1a; 更多的完整、…

超级强大!送你几款Linux 下终极SSH客户端

更多IT技术&#xff0c;请关注微信公众号:“运维之美” 超级强大&#xff01;送你几款Linux 下终极SSH客户端 1.MobaXterm2.Xshell3.SecureCRT4.PuTTY5.FinalShell6.Termius7.WindTerm 安全外壳协议&#xff08;Secure Shell&#xff0c;简称 SSH&#xff09;是一种网络连接协议…

服务器安装宝塔面板

参考官方文档 【教程贴】如何登录您的Linux云服务器并安装宝塔面板 - Linux面板 - 宝塔面板论坛 换言之&#xff1a; 下载 宝塔终端 使用ssh连接远程服务器 输入命令行安装 curl -sSO http://download.bt.cn/install/install_panel.sh && bash install_panel.sh 安…

在 Python 中将 Unicode 转换为 ASCII

通过本文&#xff0c;我们将学习如何将 Unicode 编码为字节&#xff0c;了解系统编码的不同方法以及在 Python 中将 Unicode 转换为 ASCII。 在 Python 中将 Unicode 转换为 ASCII Python 3 字符串的基本问题是由字符组成的&#xff1b; Python 中没有字符类型&#xff0c;但它…

数据清洗与规范化详解

数据处理流程&#xff0c;也称数据处理管道&#xff0c;是将原始数据转化为有意义的信息和知识的一系列操作步骤。它包括数据采集、清洗、转换、分析和可视化等环节&#xff0c;旨在提供有用的见解和决策支持。在数据可视化中数据处理是可视化展示前非常重要的一步&#xff0c;…

搭建SNMP服务器

要搭建SNMP服务器&#xff0c;您可以按照以下步骤进行操作&#xff1a; 选择合适的操作系统&#xff1a;您可以选择在Windows、Linux或其他操作系统上搭建SNMP服务器。不同的操作系统有不同的安装和配置方法。 安装SNMP软件&#xff1a;根据您选择的操作系统&#xff0c;安装相…

AIGC扫盲和应用场景探究

什么是AIGC&#xff1f; AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;是指利用人工智能技术生成内容的能力。火爆的虚拟数字人&#xff0c;就是AIGC的典型代表&#xff0c;它可以通过学习大量数据和知识&#xff0c;生成与人类创作相似甚至超越人类…

UG\NX二次开发 同时设置多个对象的高亮状态 UF_DISP_set_highlights

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 captainliubang 订阅本专栏,非常感谢。 简介 UG\NX二次开发 同时设置多个对象的高亮状态 UF_DISP_set_highlights 效果 代码(在for循环中逐个设置多个对象…

数据结构零基础C语言版 严蔚敏-线性表、顺序表

二、顺序表和链表 1. 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串...... 线性表在逻辑上是线性结构&#xff0c;…

【MySQL索引与优化篇】索引的数据结构

文章目录 1. 概述2. 常见索引结构2.1 聚簇索引2.2 二级索引(辅助索引、非聚簇索引)2.3 联合索引 3. InnoDB的B树索引的注意事项3.1 根页面位置万年不动3.2 内节点中目录项记录的唯一性 4. MyISAM中的索引方案5. InnoDB和MyISAM对比6. 小结7. 补充&#xff1a;MySQL数据结构的合…

有六家机器视觉公司今年11月份初放假到明年春节后,除夕不放假看住企业不跑路,不倒闭,明年大家日子会越来越甜

不幸的消息一个接着一个&#xff0c;请大家注意下面的消息 我已经收到已经有6家机器视觉公司今年11月份初放假到明年春节后&#xff0c;他们真的没有订单了&#xff0c;其中4家宣布员工可以自行寻找工作&#xff0c;今年除夕不放假是经济下行经济考量吗&#xff1f;看住企业不…

分布式:一文搞定Redis/Zookeeper/MySQL实现分布式锁

目录 一、项目准备spring项目数据库 二、传统锁演示超卖现象使用JVM锁解决超卖解决方案JVM失效场景 使用一个SQL解决超卖使用mysql悲观锁解决超卖使用mysql乐观锁解决超卖四种锁比较Redis乐观锁集成Redis超卖现象redis乐观锁解决超卖 三、分布式锁概述四、Redis分布式锁实现方案…

全连接层是什么,有什么作用?

大家好啊&#xff0c;我是董董灿。 如果你是搞AI算法的同学&#xff0c;相信你在很多地方都见过全连接层。 无论是处理图片的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;还是处理文本的自然语言处理&#xff08;NLP&#xff09;网络&#xff0c;在网络的结尾做分类…

机器学习之ROC与AUC

文章目录 定义ROC曲线&#xff1a;AUC&#xff08;Area Under the ROC Curve&#xff09;&#xff1a; 定义 ROC&#xff08;Receiver Operating Characteristic&#xff09;曲线和AUC&#xff08;Area Under the ROC Curve&#xff09;是用于评估二分类模型性能的重要工具。 …

Macos文件图像比较工具:Kaleidoscope for Mac

Kaleidoscope是一款文件图像比较工具&#xff0c;它可以方便地比较两个文本或者图片文件的差异。这个工具可以在Mac系统上使用&#xff0c;并且支持多种文件格式&#xff0c;包括文本文件、图片文件、PDF文件等等。 Kaleidoscope有一个直观的用户界面&#xff0c;可以让用户轻…

Postman的高级使用,傻瓜式学习【上】

目录 前言 1、小白使用Postman是不是这样的&#xff1f; 2、管理测试用例 2.1、创建用例集collections 3、用例集的导出导入 4、再次认识Postman ​编辑 5、Authrization授权 6、Pre-request Script 前置脚本 7、Tests 断言 Postman中常用的断言&#xff1a; 1&…

电源控制系统架构(PCSA)背景和简介

安全之安全(security)博客目录导读 目录 一、PCSA背景 二、PCSA简介 三、PCSA范围和限制 电源控制系统架构规范描述了一种基于Arm组件的SoC电源控制系统架构的方法。它定义了电源控制系统架构(PCSA)的V2.1版本。 由于Arm组件自1.0版本以来的发展&#xff0c;该版本包含了重…

WAS如何设置日志大小和数量

WAS如何设置日志大小和数量 注意&#xff1a; 本经验使用的版本为WebSphere Application Server 7.0.0.25 在IE中输入控制台地址&#xff0c;然后点击【继续浏览此网站&#xff08;不推荐&#xff09;】选项 ​​​ 输入控制台的用户名和密码&#xff0c;点击【登陆】&#x…

Linux文件系统、文件I/O和动静态库

文章目录 一、Linux文件系统1.存储设备文件系统2.伪文件系统a).procfs文件系统b).sysfs文件系统 3.虚拟文件系统4.文件系统的结构5.软硬链接 二、文件I/O1.I/O分类a).缓冲与非缓冲 I/Ob).直接与非直接 I/Oc).阻塞与非阻塞 I/O VS 同步与异步 I/O 2.Linux中I/O系统调用函数a).op…