SpringCloudAlibaba实战-快速上手

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

一、创建父项目

1. 创建项目基础信息

1. 选择项目基础信息

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

SpringCloudAlibaba实战-快速上手_第1张图片

2.选择依赖

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

SpringCloudAlibaba实战-快速上手_第2张图片

3.点击创建后项目如下

SpringCloudAlibaba实战-快速上手_第3张图片

4.删除无关项

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

SpringCloudAlibaba实战-快速上手_第4张图片

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/662c076ef8f4af0ec94caa86ade169442684904fSpringCloudAlibaba实战-快速上手_第5张图片

2.版本选择

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

SpringCloudAlibaba实战-快速上手_第6张图片

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

SpringCloudAlibaba实战-快速上手_第7张图片

3. 配置父pom.xml

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

  •         2.2.6.RELEASE
  •         2.3.2.RELEASE
  •         Hoxton.SR9


    4.0.0
    com.xixijun
    spring-cloud-blog
    0.0.1-SNAPSHOT
    spring-cloud-blog

    pom

    
        1.8
        UTF-8
        UTF-8
        2.2.6.RELEASE
        2.3.2.RELEASE
        Hoxton.SR9
    

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    
    
    
        
            
            
                org.springframework.boot
                spring-boot-starter-parent
                ${spring.boot.version}
                pom
                import
            
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring.cloud.alibaba.version}
                pom
                import
            
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring.cloud.version}
                pom
                import
            

        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
        
    


pom.xml说明;

properties中配置统一版本管理

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

一般设置为:artifactId.versiom。

引用:${artifactId.versiom}

示例:


    2.3.2.RELEASE
 


    org.springframework.boot
    spring-boot-starter-parent
    ${spring.boot.version}
    pom
    import

dependencyManagement集中化的依赖管理

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

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

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

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

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

  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. 新建模块

SpringCloudAlibaba实战-快速上手_第8张图片

2.模块设置

SpringCloudAlibaba实战-快速上手_第9张图片

3.依赖选择

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

SpringCloudAlibaba实战-快速上手_第10张图片

 Idea中模块不高亮问题

 原因:曾经创建过类似的名称的模块,然后删除了,所以被maven给排除了。SpringCloudAlibaba实战-快速上手_第11张图片

解决办法:

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

SpringCloudAlibaba实战-快速上手_第12张图片

4. 设置模块pom

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



    4.0.0
    
        com.xixijun
        spring-cloud-blog
        0.0.1-SNAPSHOT
    

    com.xixijun
    order-nacos

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
    

    
        8
        8
        UTF-8
    

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

SpringCloudAlibaba实战-快速上手_第13张图片

5. 填充代码

(1)项目结构

SpringCloudAlibaba实战-快速上手_第14张图片

(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)项目结构

SpringCloudAlibaba实战-快速上手_第15张图片

(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。

SpringCloudAlibaba实战-快速上手_第16张图片

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文件

SpringCloudAlibaba实战-快速上手_第17张图片

(3)解压后文件内容

SpringCloudAlibaba实战-快速上手_第18张图片

(4)修改配置

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

SpringCloudAlibaba实战-快速上手_第19张图片

(5)输入cmd,回车

SpringCloudAlibaba实战-快速上手_第20张图片

(6)输入startup.cmd

SpringCloudAlibaba实战-快速上手_第21张图片

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

SpringCloudAlibaba实战-快速上手_第22张图片

(7)客户端界面访问

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

默认密码:nacos

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

SpringCloudAlibaba实战-快速上手_第23张图片

四、启动项目

1. 启动 OrderApplication 和 StockApplication

SpringCloudAlibaba实战-快速上手_第24张图片

SpringCloudAlibaba实战-快速上手_第25张图片

统一管理面板

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

SpringCloudAlibaba实战-快速上手_第26张图片

2. 查看服务注册中心

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

SpringCloudAlibaba实战-快速上手_第27张图片

3. 访问地址项目功能

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

SpringCloudAlibaba实战-快速上手_第28张图片

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

你可能感兴趣的:(Spring架构,spring,cloud,spring,boot,微服务,spring)