代码编织梦想

SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。
程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发

在这里插入图片描述

在这里插入图片描述

1 Idea 创建 Maven 项目

在这里插入图片描述

创建好后,我们反多余的文件夹删除,留下空的 maven 工程
在这里插入图片描述
对应的pom.xml 中只留下基础的配置

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.biglead</groupId>
  <artifactId>biglead-api</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.4</version>
    <relativePath/>
  </parent>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java-version>17</java-version>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.source>17</maven.compiler.source>
  </properties>

</project>

2 SpringCloud 版本

Spring Cloud 官方

在这里插入图片描述

  • GA:General Availability,正式发布的版本,官方推荐使用此版本。在国外都是用GA来说明release版本的。
  • PRE::预览版,内部测试版,主要是给开发人员和测试人员测试和找BUG用的,不建议使用。
  • SNAPSHOT:快照版,可以稳定使用,且仍在继续改进版本。
  • SR+数字:该种形式也是正式发布的稳定版本,表示在是大版本的第几个正式版本。
    在这里插入图片描述

本系列使用 2020.0.2 版本 。
导入基本使用的依赖如下:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.biglead</groupId>
    <artifactId>biglead-api</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.4</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java-version>17</java-version>
        <maven.compiler.target>17</maven.compiler.target>
        <maven.compiler.source>17</maven.compiler.source>

        <spring-boot.version>2.4.4</spring-boot.version>
        <spring-cloud.version>2020.0.2</spring-cloud.version>
        <spring-cloud-alibaba.version>2020.0.RC1</spring-cloud-alibaba.version>
        <mysql.version>5.1.47</mysql.version>
        <mybatis.version>2.1.1</mybatis.version>
        <amqp.version>2.4.4</amqp.version>
        <elasticsearch.version>7.12.1</elasticsearch.version>

    </properties>


    <dependencyManagement>
        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--   springboot web-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

</project>

2.1 dependencyManagement 标签

在父级的 pom 中的 dependencyManagement 标签 ,是对所依赖jar包进行声明依赖,也就是这里的声明依赖的版本,继承该父项目的子项目,不会直接引入dependencyManagement管理的jar包,在子项目中使用到对应的依赖时,可不写版本号。

3 子项目 UserService 服务创建

在这里插入图片描述
比如我这里创建的服务叫 user-service
在这里插入图片描述
点击Next创建完成后,在父工程的 pom.xml 中添加模块依赖

    
    <modules>
        <module>user-service</module>
    </modules>

在这里插入图片描述
然后整理一下刚刚创建的user-service服务的 pom文件如下:

<?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>
        <artifactId>biglead-api</artifactId>
        <groupId>com.biglead</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>user-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user-service</name>
    <description>user-service</description>
    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
                <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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>![在这里插入图片描述](https://img-blog.csdnimg.cn/020b34be4b004aeaa6765dfba73bdc88.png)

            </plugin>
        </plugins>
    </build>

</project>

然后 clean 一下项目,重新加载一下 pom 依赖

在这里插入图片描述
然后修改 配置文件 application.properties 为 application.yml ,并添加基础的配置如下:

server:
  port: 8001

spring:
  datasource:
    url: jdbc:mysql://mysql:3306/spring_cloud?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8&useSSL=false
    username: testadmin
    password: qwert.12345
    driver-class-name: com.mysql.jdbc.Driver
  application:
    #对应pom中的配置的name
    name: '@project.name@'


mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
#mybatis
mybatis-plus:
  mapper-locations: classpath*:**/sqlmap/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.biglead.userservice.pojo
  configuration:
    map-underscore-to-camel-case: true
    #缓存
    cache-enabled: false
    call-setters-on-nulls: true
    #配置日志  log-impl:日志实现
    log-impl : org.apache.ibatis.logging.stdout.StdOutImpl

然后测试启动项目
在这里插入图片描述

4 用户信息查询

在这里使用 mybatis-plus 来查询数据库的用户信息,基本的集成过程可以查看这里

SpringBoot MyBatis-Plus 集成 【SpringBoot系列5】
数据库中对应的用户数据如下
在这里插入图片描述

UserController 中的接口信息配置

import com.biglead.userservice.pojo.UserInfo;
import com.biglead.userservice.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;

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

    /**
     * 路径: /user/110
     *
     * @param id 用户id
     * @return 用户
     */
    @GetMapping(value = "/{id}")
    public UserInfo queryById(@PathVariable("id") Long id) {
        log.info("查询用户信息 port {}",serverPort);
        return userService.queryById(id);
    }
}

UserService.java 的定义


import com.baomidou.mybatisplus.extension.service.IService;
import com.biglead.userservice.pojo.UserInfo;

public interface UserService extends IService<UserInfo> {

    /**查询用户详情*/
    UserInfo queryById(Long id);
}

UserServiceImpl.java 的定义

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biglead.userservice.mapper.UserMapper;
import com.biglead.userservice.pojo.UserInfo;
import com.biglead.userservice.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class UserServiceImpl extends ServiceImpl<UserMapper, UserInfo> implements UserService {
    /**
     * 查询用户详情
     *
     * @param id
     */
    @Override
    public UserInfo queryById(Long id) {
        return this.getById(id);
    }
}

UserMapper.java 的定义

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biglead.userservice.pojo.UserInfo;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<UserInfo> {
    

}

然后启动项目,大家可以查看一下项目的目录结构如下

在这里插入图片描述
然后在 postman 中访问 http://localhost:8001/user/1
在这里插入图片描述
然后也可以看到控制台日志如下:
在这里插入图片描述

5 子项目 order-service 创建

重复本文章 第三小节的创建 SpringBoot的过程,创建一个order-service服务,然后在 父项目中添加 order-service 的配置
在这里插入图片描述
然后 maven 重新 reload 一下,重复本文章 第四小节的过程 ,写一个订单服务的基本的查询,然后启动 订单服务如下 :

在这里插入图片描述
订单详情的表数据如下
在这里插入图片描述

然后 访问接口 http://{{host}}:9001/order/109 查询订单的数据如下
在这里插入图片描述


SpringCloud 微服务基本工程搭建完成
本文章是系列文章,代码过多,可以查看源码如下:
https://gitee.com/android.long/spring-cloud-biglead/tree/master/biglead-api-01/biglead-api-01
有兴趣可以关注一下 公众号 biglead

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zl18603543572/article/details/129668121

手把手教你搭建SpringCloud项目(一)图文详解-爱代码爱编程

Spring Cloud全集文章目录: 零、什么是微服务?一看就会系列! 一、手把手教你搭建SpringCloud项目(一)图文详解,傻瓜式操作 二、手把手教你搭建SpringCloud项目(二)生产者与消费者 三、手把手教你搭建SpringCloud项目(三)集成Eureka服务注册中心 四、手把手教你搭建SpringCloud项目(四)Eur

微服务学习5:Spring Cloud Alibaba项目快速搭建-爱代码爱编程

简介:快速搭建简单的Spring Cloud Alibaba基础工程,并实现微服务之间的简单调用。 1、电商系统模拟情形 用户要下单购买某件商品,先请求order订单微服务,order微服务去product微服务查询商品信息,并生成订单。(商品总得有库存,这里库存就暂时跟商品放一起,什么仓储物流先别管,就当作是虚拟商品好了) 下单流程图:

SpringCloud项目的搭建-爱代码爱编程

SpringCloud项目的搭建 SpringCloud Alibaba微服务解决方案1. 概述2. 核心组件分析3. 解决方案架构设计4. 构建SpringCloud 聚合项目并进行环境初始化4.1 工程结构4.2 添加对应的依赖5. 总结 SpringCloud Alibaba微服务解决方案 1. 概述 Spring Cloud Ali

初学Eclipse搭建springcloud项目——父工程的创建-爱代码爱编程

由于面试发现现在市面上基本,最基础的要求就是,分布式,微服务,springboot,springcloud,中间件等。今天开始学习springcloud,本人是看文字就头疼,看概念就想睡觉的菜鸡。就只能查大佬怎么项目搭建,自己动手复制粘贴 此处使用eclipse搭建项目 一、创建父工程 1、创建Maven项目 1.1 点击File→New→Mave

搭建SpringCloud项目-爱代码爱编程

一.微服务基础 1.什么是SpringCloud? SpringCloud官网:Spring Cloud 以前的服务器就好像,一个会语数外全能的老师,为学生提供服务,这个老师生病了,那全校停课。现在微服务流行后,学校有了数学教研组,语文教研组,外语教研组,每个教研组有一群老师具体负责某科的教学,缺了谁,学校都照样运转。而这个变化中,那些改变历史的程序

springcloud项目搭建步骤_心之所向、的博客-爱代码爱编程

SpringCloud项目搭建步骤 springCloud五大核心组件 五大核心组件如下: 服务发现——Netflix Eureka客户端 负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config 一、搭建eureka客户端

手把手教你搭建springcloud alibaba微服务--搭建工程_midiexiang_的博客-爱代码爱编程

我们凭什么要用springcloud alibaba? 1、单体应用的痛点 传统的单体应用,将所有功能的表示层、业务逻辑层,数据访问层,包括静态资源等等全部糅合在一个工程里面,编译,打包,部署在单台服务器上上线,比如打成war包放在Tomcat的webapp目录中部署项目。这样的项目开发部署适合小型项目,系统功能不复杂,访问量不大的情况下有绝对的优势。开

spring cloud alibaba 工程搭建_wayfreem的博客-爱代码爱编程

简介 搭建 Spring cloud alibaba 是基于 阿里的一整套微服务治理组件,使用 nacos 作为注册中心与服务发现,以及使用 nacos 作为配置中心,使用 sentinel 经行服务限流以及降级处理。使用

快速搭建springcloud项目_这么大的太阳你热不热的博客-爱代码爱编程

本文讲述springcloud项目从0开始的搭建过程以及其中需要注意的问题,不涉及具体的理论内容以及微服务项目中的五大问题和具体解决办法的插件或手段.五大问题的具体解决办法在本合集中分别进行逐一讲解 本文模拟了电商项目中的订单微服务模块和商品微服务模块.商品微服务模块只实现一个功能:"通过商品id获取商品信息的功能,返回一个商品对象(produc

第十六章 spring cloud alibaba 基础环境搭建_爱吃面的猫的博客-爱代码爱编程

目录 一、创建父工程 1.创建父工程 二、创建公共API 1、创建公共API 2、创建实体类及打包 三、完善父工程 pom 四、项目整体结构           Spring Cloud  Alibaba基础环境搭建。 一、创建父工程 1.创建父工程        创建父工程 Maven 项目 springcoudalibaba,并

springcloud项目nacos搭建和示例 附上源码-爱代码爱编程

springcloud项目nacos搭建和示例 记得先启动nacos,不会的可以看看其他博客是怎么安装和启动的,反正简简单单的事情 项目地址:https://gitee.com/lideru/springboot-clo