【SpringCloud】02 搭建springcloud微服务项目

news2024/12/28 18:53:24

文章目录

  • 搭建springcloud微服务项目
    • 1. 微服务父工程
    • 2. 创建子模块-shop-common
    • 3. 创建子模块--shop-product
    • 4. 创建子模块--shop-order

搭建springcloud微服务项目

技术栈:

  1. springcloud-alibaba
  2. mybatis-plus 持久性框架
  3. mysql数据库5.7以上
  4. springboot来搭建每个微服务。

1. 微服务父工程

在这里插入图片描述
把其他的全删掉,只保留一个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>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.aaa</groupId>
    <artifactId>qy156-shop-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>qy156-shop-parent</name>
    <description>Demo project for Spring Boot</description>
    <!--定义版本号-->
    <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.version>Hoxton.SR8</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <!--jar得管理 它只负责jar得管理不负责下载-->
    <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. 创建子模块-shop-common

把其他模块公共得代码放入到该模块。- - -实体 工具类

在这里插入图片描述

  <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>
    </dependencies>

定义相关得实体类

@Data
@TableName(value = "shop_order")
public class Order {
    //订单id
    @TableId
    private Long oid;
    //用户id
    private Integer uid;
    //用户名
    private String username;
    //商品id---购买时99---->活动结束后199
    private Long pid;
    //商品得名称
    private String pname;
    //商品得价格
    private Double pprice;
    //购买得数量
    private Integer number;
}

@Data
@TableName("shop_product")
public class Product {
    @TableId
    private Long pid;
    private String pname;
    private Double pprice;
    private Integer stock;
}

3. 创建子模块–shop-product

关于商品表操作的接口
在这里插入图片描述

	<dependencies>
          <!--引入公共模块-->
        <dependency>
            <groupId>com.aaa</groupId>
            <artifactId>shop-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!--引入springboot-starter-web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

配置文件

# 定义端口号 [8001~8009 未来方便搭建集群]
server:
  port: 8001

#数据源得信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghai
    username: root
    password: root

# mybatis打印日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

dao接口

/**
 * @program: qy156-shop-parent
 * @description:
 * @author: 闫克起
 * @create: 2022-11-17 16:22
 **/
public interface ProductDao extends BaseMapper<Product> {
}

service代码

@Service
public class ProductService implements IProductService {
    
    @Autowired
    private ProductDao productDao;
    @Override
    public Product findById(Long pid) {
        return productDao.selectById(pid);
    }
}

controller

@RestController
@RequestMapping("product")
public class ProductController {

    @Autowired
    private IProductService productService;

    @GetMapping("/getById/{pid}")
    public Product getById(@PathVariable Long pid){
         return productService.findById(pid);
    }
}

主启动类

@SpringBootApplication
@MapperScan(basePackages = "com.aaa.product.dao")
public class ProductApp {
    public static void main(String[] args) {
        SpringApplication.run(ProductApp.class,args);
    }
}

在这里插入图片描述

4. 创建子模块–shop-order

关于订单表得所有操作接口
在这里插入图片描述

	<dependencies>
        <!--引入公共模块-->
        <dependency>
            <groupId>com.aaa</groupId>
            <artifactId>shop-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!--引入springboot-starter-web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

配置

#端口号---[9001~9009]集群模式
server:
  port: 9001

#数据源得信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghai
    username: root
    password: root
# sql显示在控制台
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

dao接口

package com.aaa.order.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * @program: qy156-shop-parent
 * @description:
 * @author: 闫克起
 * @create: 2022-11-18 14:34
 **/
public interface OrderDao extends BaseMapper<OrderDao> {

}

service代码

@Service
public class OrderService implements IOrderService {

    @Autowired
    private OrderDao orderDao;
    @Override
    public int save(Order order) {
        return orderDao.insert(order);
    }
}

controller代码

package com.aaa.order.controller;

import com.aaa.entity.Order;
import com.aaa.entity.Product;
import com.aaa.order.service.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @program: qy156-shop-parent
 * @description:
 * @author: 闫克起2
 * @create: 2022-11-17 16:33
 **/
@RestController
@RequestMapping("/order")
public class OrderController {


    //必须创建并交于spring容器管理。这样才能被注入到相应的类属性上
    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private IOrderService orderService;

    @GetMapping("/saveOrder")
    public String saveOrder(Long pid,Integer num){

        Order order=new Order();
        //用户得信息可以从登录后获取--Session  redis  jwt
        order.setUid(1);
        order.setUsername("张成");
        //为订单对象设置商品得信息
        order.setPid(pid);
       //需要远程调用商品微服务中的指定接口[注意:凡是关于商品的操作都有商品微服务来执行。]
        //远程调用的方式:第一种基于TCP协议的RPC远程调用   第二种基于http协议Restful风格的调用。
        //分布式架构:TCP协议的
        //微服务架构:http协议的。---在spring框架中封装了一个工具RestTemplate。 如果不是使用的spring框架。你需要自己封装HttpClient工具
        Product product = restTemplate.getForObject("http://localhost:8001/product/getById/"+pid, Product.class);
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());
        order.setNumber(num);


        orderService.save(order);

        return "下单成功";
    }
}

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

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

相关文章

艾美捷Immunochemistry MitoPT JC-1试剂盒

艾美捷Immunochemistry MitoPT JC-1测定利用荧光染料JC-1检测线粒体膜去极化。当积聚在带负电的极化线粒体中时&#xff0c;JC-1发出橙色荧光。当线粒体膜电位在凋亡或代谢应激的细胞中崩溃时&#xff0c;JC-1试剂分散在细胞中并发出绿色荧光。使用流式细胞仪、荧光平板读取器或…

【场景化解决方案】慧致造ERP,为企业提供生产全流程数字化管理

方案简介 慧致造ERP以钉钉为基座&#xff0c;借助钉钉待办、工作通知、OA审批、工作台组件、酷应用、定制工作台等开放能力&#xff0c;围绕制造业生产管理场景与钉钉深度融合&#xff0c;为中小制造业打造业财一体化的生产制造解决方案&#xff0c;企业用户只需一个平台&…

Linux企业运维之git的使用

文章目录前言一、git简介以及基础操作二、github或者在gitee上创建项目并且上传本地项目自动化创建&#xff08;触发jenkins&#xff09;前言 一、git简介以及基础操作 git 简单来说就是版本控制系统 但是相对于其他版本控制系统来说&#xff0c;它又具有一些优点&#xff1a;…

集群渲染和渲染农场是什么意思?跟云渲染有什么关系?

嗨咯&#xff0c;大家好&#xff0c;今天后台有同学问集群渲染什么意思&#xff1f;集群渲染怎么做&#xff1f; 集群渲染&#xff08;cluster rendering&#xff09;指的是一组计算机通过通信协议连接在一起的计算机群&#xff0c;它们能够将工作负载从一个超载的计算机迁移到…

20款免费项目管理系统推荐

通过本篇文章您将了解&#xff1a;1、国内外20款最佳项目管理软件&#xff1b;2、使用免费项目管理工具可能面临的风险。一、项目管理软件的重要性 根据 Capterra 的数据研究&#xff0c;项目管理软件即将成为人们最需要的软件。一个项目无论大小&#xff0c;都需要一款高效且…

基于PHP+MySQL游戏视频网站的设计与实现

游戏是茶前饭后一个很好的娱乐方式,但是由于当下网络的高速发展,游戏的模式和种类也丰富多彩,这就导致很多时候人们不能够很快的对游戏上手。 为了改变这一情况很多视频娱乐类网站都出现了游戏视频,但是大多数时候这种网站并不是一个专业的游戏视频网站,跟多的时候是各类电影和…

SpringMVC学习

SpringMVCSpring MVC概述&#xff1a;**什么是Spring MVC &#xff1f;****什么是MVC?**第一个SpringMVC程序具体步骤&#xff1a;具体实现&#xff1a;第一个SpringMVC小程序的完善Spring MVC概述&#xff1a; 什么是Spring MVC &#xff1f; 他是基于MVC开发模式的框架&am…

数学建模英文论文的写作方法和步骤

目录 一、语言技巧 二、论文结构 1.标题写作 2.摘要写作时态​编辑 2.2摘要写作语态 2.3摘要写作人称 2.4摘要写作注意事项 3.问题重述 4. 符号说明​编辑 三线表 ​5.模型假设(以三到七个合理假设为宜 ) 6.模型分析及建立模型 7.模型求解 8.模型检验 9.模型优…

电视剧里的代码真能运行吗?

大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 前几天&#xff0c;后台老有小伙伴留言“爱心代码”。这不是Crossin很早之前发过的内容嘛&#xff0c;怎么最近突然又被人翻出来了&#xff1f;后来才知道&#xff0c;原来是一部有关程序员的青春偶像剧《点燃我,温…

022_SSS_Novel View Synthesis with Diffusion Models

Novel View Synthesis with Diffusion Models 1. Introduction 本文利用diffusion模型&#xff0c;在给定参考图的条件下&#xff0c;生成指定pose的图像&#xff0c;作者称为3DiM。并且可以在给定一张特定视角的图的条件下&#xff0c;生成其他所有视角的图。 本文的主要贡…

Treap 原理详解和实战

一 点睛 Treap 指 Tree heap&#xff0c;又叫作树堆&#xff0c;同时满足二叉搜索树和堆两种性质。二叉搜索树满足中序有序性&#xff0c;输入序列不同&#xff0c;创建的二叉搜索树也不同&#xff0c;在最坏的情况下&#xff08;只有左子树或只有右子树&#xff09;会退化为…

CMCT-FA修饰阿霉素纳米脂质体/ADR-HAS-MS单抗Hab18偶联阿霉素人血清白蛋白微球的制备方法

瑞禧生物这里整理的内容是CMCT-FA修饰阿霉素纳米脂质体/ADR-HAS-MS单抗Hab18偶联阿霉素人血清白蛋白微球的相关制备方法&#xff0c;来学习&#xff01; MCT-FA修饰阿霉素纳米脂质体的研究&#xff1a; 利用1-乙基-3-(3-二甲基丙基)-碳二亚胺(EDC)介导 反应合成了叶酸偶联的羧甲…

LeetCode刷题---160. 相交链表(双指针-对撞指针)

文章目录一、编程题&#xff1a;160. 相交链表&#xff08;双指针-对撞指针&#xff09;1.题目描述2.示例1&#xff1a;3.示例2&#xff1a;4.示例3&#xff1a;5.提示&#xff1a;6.提示&#xff1a;二、解题思路1.思路2.复杂度分析&#xff1a;3.算法图解三、代码实现总结一、…

CSS——图标字体

为什么需要图标字体&#xff1f; 在网页中经常会有需要使用一些图标的地方&#xff0c;比如&#x1f6d2; &#xff0c; &#x1f464;&#xff0c;⏫等等&#xff0c;虽然我们可以通过图片来引入图标&#xff0c;但是图片本身比较大&#xff0c;页面刷新加载图片耗时不说&…

[附源码]java毕业设计小区疫情防控系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

知乎乱码、b站首页乱码、蓝奏云网盘打不开都是DNS惹的祸!修改设备的DNS

知乎乱码、b站首页乱码、蓝奏云网盘打不开等问题&#xff0c;常常是连接WiFi的时候会出现&#xff0c;一旦将手机切换为蜂窝、或者给电脑用蜂窝热点这个问题就能解决&#xff1a; 接下来教一下大家如何修改自己设备的DNS,从而 修复知乎乱码、b站首页乱码、蓝奏云网盘打不开 0.…

八环氧环己基乙基笼状聚倍半硅氧|八苯胺丙基poss

八环氧环己基乙基笼状聚倍半硅氧 外观&#xff1a;透明&#xff0c;淡黄色半固体状物 黏度&#xff1a;50000cps&#xff08;60℃&#xff09; 密度&#xff1a;1.25g/ml 分子量&#xff1a;1418 环氧当量&#xff1a;177 折射率&#xff1a;1.52 溶解性&#xff1a;溶于…

所见即所得的3D打印建模设计

3D打印机安装好后&#xff0c;需要的软件环境&#xff1a; 1. Cura 这类切片软件&#xff1b; 用于将STL等模型文件转换成3D打印的执行指令集&#xff0c;其实就是G-CODE的组合&#xff0c;有些还支持在线调试。 Simplify3D https://download.csdn.net/download/pocean2012…

深度剖析数据在内存中的存储

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C/C】 目录1.数据类型详细介绍1.1数据类型介绍1.2类型的基本归类2.整型在内存中的存储3.大小端字节序介绍及判断什么是大端小端&#x…

[附源码]Python计算机毕业设计茶叶产品质量安全可追溯系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…