Kite学习框架的第二十天

开始之前创建微服务Cloud整体聚合工程Project
步骤:

  1. 创建一个新的Maven工程
    选择的骨架:

    2.在设置中更改字符编码:修改为UTF-8

    3.勾选注解生效

    4.预编译版本选择Java8

    配置父类工程POM
    注意
    packing 为 pom
    以前我们为jar
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.kitey.springc;oud</groupId><artifactId>demo01_cloud</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>cloud-provider-payment8001</module><module>cloud-provider-payment-8001</module></modules><name>Maven</name><!-- FIXME change it to the project's website --><url>http://maven.apache.org/</url><inceptionYear>2001</inceptionYear><distributionManagement><site><id>website</id><url>scp://webhost.company.com/www/website</url></site></distributionManagement><!--统一管理jar包版本--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>12</maven.compiler.source><maven.compiler.target>12</maven.compiler.target><junit.version>4.12</junit.version><!--Lombok项目是一种自动接通你的编辑器和构建工具的一个Java库--><lombok.version>1.18.10</lombok.version><log4j.version>1.2.17</log4j.version><mysql.version>8.0.18</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>2.1.1</mybatis.spring.boot.version></properties><!-- 子模版继承之后,提供作用:锁定版本module不用写groundId以及version+--><dependencyManagement><dependencies><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-project-info-reports-plugin</artifactId><version>3.0.0</version></dependency><!--spring boot 2.2.2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud 阿里巴巴--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>runtime</scope></dependency><!-- druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><!--log4j--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency></dependencies></dependencyManagement><build><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><plugin><artifactId>maven-site-plugin</artifactId><version>3.7.1</version></plugin><plugin><artifactId>maven-project-info-reports-plugin</artifactId><version>3.0.0</version></plugin></plugins></pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><configuration><locales>en,fr</locales></configuration></plugin></plugins></build><reporting><plugins><plugin><artifactId>maven-project-info-reports-plugin</artifactId></plugin></plugins></reporting>
</project>

1. 在该父工程下创建微服务提供者支付Moudle

首先看一下目录结构

1.1 创建后,更改POM文件,导入依赖

因为父类工程使用了dependencyManagement 所以有些可以进行省略

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>demo01_cloud</artifactId><groupId>cn.kitey.springc;oud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-provider-payment-8001</artifactId><dependencies><!-- 包含了sleuth zipkin 数据链路追踪--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency><!-- 引用自己定义的api通用包,可以使用Payment支付Entity --><!--<dependency>--><!--<groupId>com.eiletxie.springcloud</groupId>--><!--<artifactId>cloud-api-commons</artifactId>--><!--<version>${project.version}</version>--><!--</dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!--eureka client--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.20</version><!--如果没写版本,从父层面找,找到了就直接用,全局统一--></dependency><!--mysql-connector-java--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></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>
</project>

1.2 创建applicatio.yml

1.设置数据源:datasource
2.mybatis扫面的mapper文件和扫面的实体类包名
3.配置了eureka的注册

server:port: 8001spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSource   #当前数据源的操作类型driver-class-name: com.mysql.jdbc.Driver #mysql驱动包url: jdbc:mysql:///db2020?characterEncoding=utf8&serverTimezone=GMT%2B8username: rootpassword: 25002500jpa:show-sql: truemybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: cn.kitey.springcloud.entities  #所有的Entity所在的包eureka:client:register-with-eureka: false # 是否注册自己的信息到EurekaServer,默认是truefetch-registry: false # 是否拉取其它服务的信息,默认是trueservice-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。defaultZone: http://172.30.242.7:8001/eureka

1.3 创建启动类

程序启动的入口


package cn.kitey.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class PaymentMain8001 {public static void main(String[] args) {SpringApplication.run(PaymentMain8001.class, args);}
}

1.4 创建业务类

1.4.1 在mysql中创建表

CREATE TABLE `payment`(`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`serial` VARCHAR(200) NOT NULL,PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

这里我进行数据插入了

1.4.2 创建实体类entities

这里创建实体类使用了lombok
@Data //它包含getter、setter、NoArgsConstructor注解,即当使用当前注解时,会自动生成包含的所有方法;
@AllArgsConstructor //全参构造
@NoArgsConstructor //无参构造
数据库对应的实体类

package cn.kitey.springcloud.entities;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;/*** 实体类*/
@Data  //它包含getter、setter、NoArgsConstructor注解,即当使用当前注解时,会自动生成包含的所有方法;
@AllArgsConstructor    //全参构造
@NoArgsConstructor     //无参构造
public class Payment implements Serializable {private Long id;private String serial;
}

返回给前端的json的实体类

package cn.kitey.springcloud.entities;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** 信息返回给前端人员* @param <T>*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult<T> {//返回的404  500 等private Integer code;//返回的信息  例如错误信息private String message;private T data;public CommonResult(Integer code, String message){this.code =code;this.message =message;}
}

1.4.3 创建持久层dao

这里最好使用mapper注解
我们这里使用的配置文件方式进行sql语句的书写


package cn.kitey.springcloud.dao;import cn.kitey.springcloud.entities.Payment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;/*** dao持久层*/@Mapper
public interface PaymentDao {/*** 写操作* @param payment* @return*/public int create(Payment payment);/*** 读操作* @param id* @return*/public Payment getPaymentById(@Param("id") Long id);}

创建后,在mapper包创建PaymentMapper.xml
创建执行的sql语句

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:表示映射的那个dao接口--><mapper namespace="cn.kitey.springcloud.dao.PaymentDao"><!--useGeneratedKeys :返回是否为1创建成功 --><insert id="create" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">insert into payment(serial) values(#{serial});</insert><select id="getPaymentById" parameterType="Long" resultMap="BaseResultMap">select * from payment where id=#{id};</select><resultMap id="BaseResultMap" type="cn.kitey.springcloud.entities.Payment"><id column="id" property="id" jdbcType="BIGINT"></id><id column="serial" property="serial" jdbcType="VARCHAR"></id></resultMap></mapper>

1.4.4 创建service

首先创建service接口
注意添加注解mapper


package cn.kitey.springcloud.service;import cn.kitey.springcloud.entities.Payment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;@Mapper
public interface PaymentSrevice{/*** 写操作* @param payment* @return*/public int create(Payment payment);/*** 读操作* @param id* @return*/public Payment getPaymentById(@Param("id") Long id);
}

创建service实现类
注意添加注解service

package cn.kitey.springcloud.service.impl;import cn.kitey.springcloud.dao.PaymentDao;
import cn.kitey.springcloud.entities.Payment;
import cn.kitey.springcloud.service.PaymentSrevice;
import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service
public class PaymentServiceImpl implements PaymentSrevice {@ResourcePaymentDao paymentDao;@Overridepublic int create(Payment payment) {return paymentDao.create(payment);}@Overridepublic Payment getPaymentById(Long id) {return paymentDao.getPaymentById(id);}
}

1.4.5 创建controller

我们这里使用的
@Slf4j //打印日志
@Resource :数据的自动注入

package cn.kitey.springcloud.controller;import cn.kitey.springcloud.entities.CommonResult;
import cn.kitey.springcloud.entities.Payment;
import cn.kitey.springcloud.service.impl.PaymentServiceImpl;
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.PostMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
@Slf4j    //打印日志
public class PaymentController {@Resourceprivate PaymentServiceImpl paymentService;/*** 数据的插入* @param payment* @return*/@PostMapping("/payment/create")public CommonResult create(Payment payment){int result = paymentService.create(payment);log.info("******插入结果" + result);if(result > 0){return new CommonResult(result, "200", "插入数据成功!");}else{return new CommonResult(444,"插入数据失败!", null);}}@GetMapping("/payment/get/{id}")public CommonResult getPaymentById(@PathVariable("id") long id){Payment paymentById = paymentService.getPaymentById( id);log.info("*****查询数据的结果:" +paymentById);if(paymentById !=null){return new CommonResult(200,"查询数据成功!",paymentById);}else{return new CommonResult(444,"查询数据失败,你查询的id:" + id,null);}}}

1.5进行测试

我们使用Postman软件进行测试
首先发送get请求进行数据的查询:
http://localhost:8001/payment/get/1

发送post请求进行数据存储:
http://localhost:8001/payment/create?serial=下页小风筝
请求存储数据serial 小风筝

然后我们看一下数据内容:

以上就是支付Moudle的创建
加油。感觉SpringCloud挺有意思的。

Kite的学习历程之SpringCloud之Rest微服务构建之微服务提供者支付Moudle相关推荐

  1. SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么...

    从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...

  2. springcloud 熔断不生效_深入理解SpringCloud与微服务构建

    目录 一.SpringCloud微服务技术简介 二.开发框架SpringBoot 三.服务注册和发现Ereka 四.负载均衡 五.申明式调用 六.熔断器 七.路由网关 八.配置中心 九.服务链路追踪 ...

  3. GAN学习历程之CycleGAN论文笔记

    GAN目前发展的很快,成果也很多,从GAN->Pix2pix->CycleGAN 本来是准备看一篇19年一月份ICLR发表的conference paper INSTAGAN,发现这篇论文 ...

  4. GAN学习历程之Semantic Image Synthesis with Spatially-Adaptive Normalizatio论文笔记

    Semantic Image Synthesis with Spatially-Adaptive Normalization: 论文地址:https://arxiv.org/pdf/1903.0729 ...

  5. html5 webview,HTML5+学习历程之webview经典案例

    看了这么多app,其实基本布局使用的最多的无非两种,如下图: 类似微信 类似QQ 在这里小编简单说下这两种布局简单的实现思路,当然如果你还有更好的方法,请在下面留言,让更多人知道你更好的方法! 第一种 ...

  6. SpringCloud,Eureka,服务注册,微服务之间的项目调用

    文章目录 前言 一.Eureka是什么? 二.项目实现步骤 1.项目外壳的搭建 2.Eureka注册中心服务搭建 3.Provider(提供者)服务搭建 4.Consumer(消费者)服务搭建 总结 ...

  7. SpringCloud微服务架构学习

    SpringCloud 1. 微服务架构理论入门 1.1. 微服务架构概述 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.每个服务运 ...

  8. Day2:SpringCloud入门学习——传智播客学习笔记【微服务电商】

    SpringCloud 0.学习目标 ·了解系统架构的演变 ·了解RPC与Http的区别 ·掌握HttpClient的简单使用 ·知道什么是SpringCloud ·独立搭建Eureka注册中心 ·独 ...

  9. 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

最新文章

  1. css画三角形和提示框
  2. c语言三阶素数魔方阵,用C语言构造3*3素数魔方阵,即找出9个不大于500的素数并排成魔方阵。...
  3. 设计模式18_责任链
  4. rhel6上使用udev配置oracle asm,在RHEL6上用UDEV配置ASM
  5. 总结UIViewController的view在有navBar和tabBar影响下布局区域的问题
  6. php论坛源代码,php论坛源代码下载
  7. AutoJs学习-抖音自动评论
  8. 打开ISEIP核里面的datesheet失败,显示C:\Program Files (x86) internet explorer\iexplore.exe http:\\www.xilinx.com
  9. 车联网通信中蜂窝网络的应用
  10. 创业圈里不讲武德,大厂高管也得挨市场的毒打
  11. Centos7.X修改hostname立刻生效-修改/etc/hostname后立刻生效-Centos7.x修改hostname永久生效
  12. Excel操作-多条件筛选
  13. 不规则多边形重心求解
  14. PDF文件的旋转和保存
  15. 创业成功,拉里•佩奇的五句箴言
  16. Learning Typography for Video Editors 学习视频编辑的排版 Lynda课程中文字幕
  17. 闲聊ROOT权限——ROOT权限的前世今生
  18. 如何定位计算机专业的发展方向,如何定位自己的职业发展方向?
  19. 关于flask入门教程-分页的几种方式
  20. DGL RDKit | 基于Attentive FP的分子性质线性模型

热门文章

  1. java毕业设计飞机航班信息查询系统演示视频2021源码+系统+数据库+lw文档+调试运行
  2. php 实现店铺装修6
  3. (keras自学排雷)Layer lstm will not use cuDNN kernel
  4. 智能终端:开辟移动增值业务的新天地
  5. python代码编写工具_编写更好的Python代码的终极指南
  6. Python就业怎么样
  7. ArcGis缓冲区分析
  8. IT项目管理画图题【太原理工大学】
  9. 图片路径转码与解码(学习)
  10. 基于Android的理财app开发,基于Android的个人理财系统的设计与实现.doc