栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

手把手带你搭建第一个SpringCloud项目(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

手把手带你搭建第一个SpringCloud项目(一)

目录

前言

         一、SpringCloud是什么?

二、为什么要使用SpringCloud?

三、搭建第一个SpringCloud项目

1.技术选型

2.搭建一个简单的数据库

3.新建一个Maven工程

4.将打包方式修改成pom,引入对应的pom.xml依赖

 5.创建一个CommonResult模块用来封装返回的结果

 5.搭建模块cloud-provider-payment8001作为服务提供者

 6.搭建cloud-consumer-order80作为服务消费者模块

结束语


我的一些其他与Springcloud有关的文章~欢迎大家观看喔

  • SpingCloud集成zookeeper实现服务注册并访问
  • SpingCloud整合Consul实现服务注册并访问
  • Window环境下Consul的介绍与安装教程(超详细!!)

前言

随着数据时代的发展,高访问量、高并发量越来越常见,数据量趋于海量,传统的单体应用架构有着难以理解和维护、开发效率低等缺点无法满足新时代的需求,为了更好地面对高并发海量数据的问题,便产生了微服务架构、分布式系统来面对海量的数据访问处理。

在这样的背景下,SpringCloud应运而生。对于中小型互联网公司来说,它们往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,而使用SpringCloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。因此,SpringCloud迅速拓宽市场面,成为了开发中不可或缺的角色。


一、SpringCloud是什么?

Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

二、为什么要使用SpringCloud?

springcloud是spring生态下的产物,有着非常庞大的生态圈和很多可拿来即用的组件。能够很好的解决微服务架构开发中的许多问题。有着许多的优点:

  • 为系统间服务调用提供标准化、轻量化的解决方案。
  • 生态圈强大,提供开箱即用的服务能力
  • 微服务化
  • 可利用相关组件实现各种服务的隔离、熔断、降级、监控等

 三.搭建第一个SpringCloud项目

1.技术选型

在本次教学中,我所使用到的技术选型如下表所示,大家可以根据自己的情况对各项技术的版本做出适当调整~

Maven3.8.4
JDK1.6
SpringCloudHoxton.SR1
SpringBoot2.2.2.RELEASE
mysql8.0.21

2.搭建一个简单的数据库

 本次我搭建的是一个简单的订单数据库用于我们的测试

sql语句如下:

DROP TABLE IF EXISTS `payment`;
CREATE TABLE `payment` (
  `id` int NOT NULL,
  `name` varchar(25) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

3.新建一个Maven工程

4.将打包方式修改成pom,引入对应的pom.xml依赖

    
    
        UTF-8
        1.8
        1.8
        4.12
        1.2.17
        1.18.24
        8.0.21
        1.1.21
        3.5.1
    

    
    
        
        
            
            
                org.springframework.boot
                spring-boot-dependencies
                2.2.2.RELEASE
                pom
                import
            
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR1
                pom
                import
            
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.0.RELEASE
                pom
                import
            
            
            
                mysql
                mysql-connector-java
                ${mysql.version}
            
            
            
                com.alibaba
                druid-spring-boot-starter
                ${druid.version}
            
            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis-plus.spring.boot.version}
            
            
            
                junit
                junit
                ${junit.version}
            
            
            
                log4j
                log4j
                ${log4j.version}
            
            
            
                org.projectlombok
                lombok
                ${lombok.version}
                true
            

        
   

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    true
                    true
                
            
        
    

 5.创建一个CommonResult模块用来封装返回的结果

在cloudtest目录下新建一个cloud-api-commons module

在pom.xml文件中引入对应依赖

   
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            cn.hutool
            hutool-all
            5.1.0
        
        
            org.projectlombok
            lombok
        
    

新建Payment类

package com.canrioyuan.pojo;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Payment implements Serializable {

    private Integer id;
    private String name;
}

新建CommonResult类

package com.canrioyuan.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult {
    //状态码
    private Integer code;
    //信息
    private String message;
    //传递的数据
    private T data;


    //有时候我们并不需要传递数据,因此我们可以设置一个data为空的构造方法
    public CommonResult(Integer code,String message){
        this(code,message,null);
    }
}

 6.搭建模块cloud-provider-payment8001作为服务提供者

在cloudtest目录下新建一个module

修改cloud-provider-payment8001的pom.xml,加入一些通用的依赖

    
        
            com.canrioyuan
            cloud-api-commons
            ${project.version}
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            com.baomidou
            mybatis-plus-boot-starter
        
        
            com.alibaba
            druid-spring-boot-starter
        
        
        
            mysql
            mysql-connector-java
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.projectlombok
            lombok
            true
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    true
                    true
                
            
        
    


在resource路径下新建一个application.yaml

server:
  port: 8001
spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    driver-class-name: com.mysql.cj.jdbc.Driver            # mysql驱动包 com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/order01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
    username: root
    password: password

 在java.com.canrioyuan路径下编写启动类Payment8001

package com.canrioyuan;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.canrioyuan.mapper")
public class Payment8001 {
    public static void main(String[] args) {
        SpringApplication.run(Payment8001.class,args);
    }
}

使用MybatisX插件生成对应的实体类、service和mapper

对MybatisX插件的使用不熟悉的小伙伴可以移步我的另外一篇文章喔,里面对MybatiX插件的使用有着详细的说明~

SpringBoot中MybatisX插件的简单使用教程(超详细!!)https://blog.csdn.net/weixin_47025166/article/details/125362323?spm=1001.2014.3001.5502

进入database

选择mysql数据库并进行连接


使用MybatiX插件生成对应的表的mapper、实体类... 

 

 

点击finsh后可以看到已经在对应的目录结构中生成了对应的文件

 创建一个PayemntController

package com.canrioyuan.controller;

import com.canrioyuan.Payment8001;
import com.canrioyuan.pojo.CommonResult;
import com.canrioyuan.pojo.Payment;
import com.canrioyuan.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
@Slf4j
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;
    @Resource
    private PaymentService paymentService;

    @GetMapping("/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id") Integer id){
        //使用IService接口自带的方法
        Payment result = paymentService.getById(id);
        log.info("********结果为****" + result);
        if (result !=null) {
            return new CommonResult(200, "插入数据库成功" + ":" + serverPort, result);
        } else {
            return new CommonResult(400, "插入数据库失败", null);
        }
    }
}

 对接口进行测试:http://localhost:8001/payment/get/2,结果如下即访问成功

 7.搭建cloud-consumer-order80作为服务消费者模块

 

 修改pom.xml文件

      
        
            com.canrioyuan
            cloud-api-commons
            ${project.version}
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

 在resources路径下新建一个application.yaml

server:
  port: 80

 在java.com.canrioyuan路径下编写启动类Order80

package com.canrioyuan;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

     创建一个配置类ApplicationContextConfig向容器中注入RestTemplate

package com.canrioyuan.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationContextConfig {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

 编写OrderController

package com.canrioyuan.controller;

import com.canrioyuan.pojo.CommonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RestController
@Slf4j
public class OrderController {
    @Resource
    private RestTemplate restTemplate;
    private final String URL="http://localhost:8001";

    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id")Integer id){
        return restTemplate.getForObject(URL+"/payment/get/"+id, CommonResult.class,id);
    }
}

对接口进行测试http://localhost/consumer/payment/get/2,若如下图所示,则访问成功:


结束语

至此,我们第一个简单的SpringCloud的开发就就结束啦~

感谢您的阅读,希望我的文章能给你带来帮助!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号