alibab仓库 idea_01.微服务架构编码、构建

教学视频传送:

springBoot和springCloud的版本选型https://start.spring.io/actuator/info

查看json串返回结果

这就是我们的选型依据

本次开发选用版本如下:

cloud         : Hoxton.SR1boot          : 2.2.2.RELEASEcloud alibaba : 2.1.0.RELEASEjava          : java8Maven         : 3.5及以上Mysql         : 5.7及以上

关于Cloud各种组件的停更、升级、替换

约定>配置>编码

IDEA新建project工作空间

微服务cloud整体聚合工程

父工程步骤New Project

聚合总父工程名字

Maven选版本

工程名字

字符编码

注解生效激活

java编译版本选8

File Type过滤

父工程POM

<?xml version="1.0" encoding="UTF-8"?>

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.2.6.RELEASE

com.top

cloud2020-learn

1.0

cloud2020-learn

pom

Demo project for cloud2020-learn

cloud-provider-payment8001

UTF-8

1.8

1.8

4.12

1.2.17

1.16.18

5.1.47

1.1.16

2.2.2.RELEASE

Hoxton.SR1

2.1.0.RELEASE

1.3.0

org.springframework.boot

spring-boot-dependencies

${spring.boot.version}

pom

import

org.springframework.cloud

spring-cloud-dependencies

${spring.cloud.version}

pom

import

com.alibaba.cloud

spring-cloud-alibaba-dependencies

${spring.cloud.alibaba.version}

pom

import

mysql

mysql-connector-java

${mysql.version}

com.alibaba

druid

${druid.version}

org.mybatis.spring.boot

mybatis-spring-boot-starter

${mybatis.spring.boot.version}

org.projectlombok

lombok

${lombok.version}

true

org.springframework.boot

spring-boot-maven-plugin

true

true

nexus-aliyun

Nexus aliyun

http://maven.aliyun.com/nexus/content/groups/public

true

false

Maven工程落地细节复习

Maven中的DependencyManagement和Dependencies

maven中跳过单元测试

父工程创建完成执行mvn:insall将父工程发布到仓库方便子工程继承

Rest微服务工程搭建

构建步骤

1. Cloud-provider-payment8001 微服务提供者Module模块

- 建module

- 改POM

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

com.alibaba

druid-spring-boot-starter

1.1.10

mysql

mysql-connector-java

org.springframework.boot

spring-boot-starter-jdbc

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

- 写YML

server:port: 8001spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包url: jdbc:mysql://localhost:3306/the_course?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: aaaaaamybatis:mapperLocations: classpath:mapper/*.xmltype-aliases-package: com.top.cloud.provider.payment8001.entities    # 所有Entity别名类所在包

- 主启动

@SpringBootApplicationpublic class CloudProviderPayment8001Application {

public static void main(String[] args) {

SpringApplication.run(CloudProviderPayment8001Application.class, args);

}

}

- 业务类CommonResult

@Data@AllArgsConstructor@NoArgsConstructorpublic class CommonResult

{    private Integer code;    private String  message;    private T       data;    public CommonResult(Integer code, String message)

{        this(code,message,null);

}

}Payment

@Data@AllArgsConstructor@NoArgsConstructorpublic class Payment implements Serializable {    private Long id;    private String name;

}PaymentDao

@Mapperpublic interface PaymentDao {    public int create(Payment payment);    public Payment getPaymentById(@Param("id") Long id);

}PaymentService

public interface PaymentService{    int create(Payment payment);    Payment getPaymentById(@Param("id") Long id);

}PaymentServiceImpl

@Servicepublic class PaymentServiceImpl implements PaymentService{    @Resource

private PaymentDao paymentDao;    @Override

public int create(Payment payment){        return paymentDao.create(payment);

}    @Override

public Payment getPaymentById(Long id){        return paymentDao.getPaymentById(id);

}

}PaymentMapper.xml

insert into payment(name)  values(#{name});    

select * from payment where id=#{id};    PaymentController

@RestController@Slf4jpublic class PaymentController{    @Resource

private PaymentService paymentService;    @Value("${server.port}")

private String serverPort;    @PostMapping(value = "/payment/create")

public CommonResult create(@RequestBody Payment payment)

{

int result = paymentService.create(payment);

log.info("*****插入结果:"+result);        if(result > 0)

{            return new CommonResult(200,"插入数据库成功,serverPort: "+serverPort,result);

}else{            return new CommonResult(444,"插入数据库失败",null);

}

}    @GetMapping(value = "/payment/get/{id}")

public CommonResult getPaymentById(@PathVariable("id") Long id)

{

Payment payment = paymentService.getPaymentById(id);        if(payment != null)

{            return new CommonResult(200,"查询成功,serverPort:  "+serverPort,payment);

}else{            return new CommonResult(444,"没有对应记录,查询ID: "+id,null);

}

}

}

- 测试

用postman或者idea自带的HTTPClient测试接口

2. cloud-consumer-order80 微服务消费者订单Module模块

- 建cloud-consumer-order80

- 改POM

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

org.junit.vintage

junit-vintage-engine

- 写YML

server:port: 80spring:application:name: cloud-order-service

- 主启动

@SpringBootApplicationpublic class CloudConsumerOrder80Application {

public static void main(String[] args) {

SpringApplication.run(CloudConsumerOrder80Application.class, args);

}

}

- 业务类CommonResult

@Data@AllArgsConstructor@NoArgsConstructorpublic class CommonResult

{    private Integer code;    private String  message;    private T       data;    public CommonResult(Integer code, String message)

{        this(code,message,null);

}

}Payment

@Data@AllArgsConstructor@NoArgsConstructorpublic class Payment implements Serializable {    private Long id;    private String name;

}ApplicationContextConfig

@Configurationpublic class ApplicationContextConfig{    @Bean

//@LoadBalanced

public RestTemplate getRestTemplate(){        return new RestTemplate();

}

}OrderController

@RestController@Slf4jpublic class OrderController{    public static final String PAYMENT_URL = "http://localhost:8001";    @Resource

private RestTemplate restTemplate;    @GetMapping("/consumer/payment/create")

public CommonResult create(Payment payment)

{        return restTemplate.postForObject(PAYMENT_URL +"/payment/create",payment,CommonResult.class);

}    @GetMapping("/consumer/payment/get/{id}")

public CommonResult getPayment(@PathVariable("id") Long id)

{

System.out.println("哈哈");        return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);

}    @GetMapping("/consumer/payment/getForEntity/{id}")

public CommonResult getPayment2(@PathVariable("id") Long id)

{

ResponseEntity entity = restTemplate.getForEntity(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);        if(entity.getStatusCode().is2xxSuccessful()){            return entity.getBody();

}else{            return new CommonResult<>(444,"操作失败");

}

}

}

- 测试http://localhost/consumer/payment/get/1

3. 工程重构观察问题: 系统中有重复部分,重构新建cloud-api-common

就是一个最简单的工程改pom

<?xml version="1.0" encoding="UTF-8"?>

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.top

cloud2020-learn

1.0

com.top

cloud-api-common

1.0

cloud-api-common

Demo project for cloud-api-common

1.8

org.springframework.boot

spring-boot-devtools

runtime

true

org.projectlombok

lombok

true

提取公共部分

maven命令clean install

其他模块依赖 删除各自的原先的entities文件夹

pom中添加:

com.top

cloud-api-common

1.0

修改代码中的依赖路径解决SpringBoot项目repackage failed: Unable to find main class Maven打包 install的问题

发现父项目有一个打包的插件

org.springframework.boot

spring-boot-maven-plugin

repackage

这时,问题就出现了,报打包失败错误!!!解决:如果你的项目是一个放置通用工具类的工程,那么该项目中,就不能包括上面这个打包插件,如果你这个工具类工程依赖有父工程,那么父工程中也不能包括该打包插件,只有你的项目是一个web项目时,含有Main方法的程序入口类,要加该打包插件,我放在了父工程的pom文件中,那就是代表了所有子模块都有这个打包插件,所以报错,解决就是去掉这个插件 ,只在web工程中加入这个打包插件!

目前工程样图

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

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

相关文章

华为手机出现android啥意思,传华为正研发手机系统,如果脱离安卓系统,还有啥能阻止华为前进...

原标题&#xff1a;传华为正研发手机系统&#xff0c;如果脱离安卓系统&#xff0c;还有啥能阻止华为前进自从国产手机正式进入了智能手机时代之后&#xff0c;中华酷联的中兴、酷派、联想早已经被华为甩在了身后。虽然现在国产手机已经呈现出华为、小米、OPPO、vivo四足鼎立的…

sql 数据库前两列值乘_Sql语句常用关键字

最近接触sql比较多&#xff0c;发现自己已经遗忘的也差不多&#xff0c;要用到的时候迟迟拿不出来&#xff0c;今天开始会在知乎上纪录一些sql语句学习的内容&#xff0c;内容重在说明查询语句的用法。一、sql查询语句的初始介绍1、查询语句的一般写法&#xff1a;select .....…

kayui进行添加_关于layui 实现点击按钮添加一行(方法渲染创建的table)

目标&#xff1a;layui 实现点击按钮添加一行解决方案&#xff1a;方案1、table 是用转换静态表格的方式创建的&#xff0c;写一个button&#xff0c;每次点击按钮&#xff0c;就添加一个 标签&#xff1b;方案2、table 是用方法渲染的方式创建的&#xff0c;写一个button,每次…

android怎样添加图片锐化功能,如何在android处理图片(图像二值化锐化转换格式).doc...

如何在android处理图片(图像二值化锐化转换格式)链接&#xff1a;如何在android处理图片( 图像二值化、锐化、转换格式)/thread-36559-1-1.htmlpackage net.wealthgod.client.center.ocr;import java.awt.Graphics2D;import java.awt.color.ColorSpace;import java.awt.geom.Af…

python的open方法_Python os.open() 方法

Python os.open() 方法 概述 os.open() 方法用于打开一个文件&#xff0c;并且设置需要的打开选项&#xff0c;模式参数mode参数是可选的&#xff0c;默认为 0777。 语法 open()方法语法格式如下&#xff1a; os.open(file, flags[, mode]); 参数 file -- 要打开的文件 flags -…

postforobject 设置代理_OAuth2RestTemplate中的代理配置

我需要使用由OAuth2保护的API.为此我使用OAuth2RestTemplate.但我得到以下错误&#xff1a;java.net.ConnectException: Connection timed out: connect由于代理问题,这种情况正在发生.我知道如何在RestTemplate中设置代理&#xff1a;SimpleClientHttpRequestFactory clientHt…

谷歌fuchsiaos和华为鸿蒙,华为鸿蒙最大的对手现身!谷歌正式推送Fuchsia OS,或替代安卓...

原标题&#xff1a;华为鸿蒙最大的对手现身&#xff01;谷歌正式推送Fuchsia OS&#xff0c;或替代安卓可能是看到了华为鸿蒙的进展神速&#xff0c;谷歌在近日也正是开始了Fuchsia OS的推送。5月25日&#xff0c;谷歌Fuchsia OS项目负责人在社交媒体上公开喊话&#xff1a;“今…

python编码规范utf8还是gbk还是ask_彻底搞懂 Python 编码

因为中文的特殊编码&#xff0c;导致 Python2 和 Python3 使用过程中的各种编码问题&#xff0c;如果不清楚其中的关联关系&#xff0c;那么这就一直是个大坑&#xff0c;不是懵逼就还是懵逼&#xff0c;所以就目前碰到的情况彻底梳理下 Python2 和 Python3 中编码的关系和区别…

k8s 命令 重启_k8s 常用命令

# 启动etcd存储服务service etcd start# 运行mastercd /opt/kubernetes/bin./apiserver.sh 192.168.220.135 http://192.168.220.135:2379./scheduler.sh 192.168.220.135./controller-manager.sh 192.168.220.135# 运行node(需要先禁用swap交换缓存&#xff0c;运行命令 swapo…

html js坐标图,javascript – HTML5 Canvas沿着带坐标的路径拖动图像

演示&#xff1a;http://jsfiddle.net/m1erickson/7vmML/示例代码&#xff1a;body{ background-color: ivory; }#canvas{border:1px solid red;}$(function(){var canvasdocument.getElementById("canvas");var ctxcanvas.getContext("2d");var $canvas$(…

python删除字符串_Python3 - 删除字符串中不需要的字符

问题 去掉文本字符串开头&#xff0c;结尾或者中间不想要的字符&#xff0c;比如空白。 解决方案 strip() 方法用于删除字符串开始或结尾的字符。 lstrip() 和 rstrip() 分别从左和从右执行删除操作。 默认情况下&#xff0c;这些方法会删除空白字符&#xff0c;但是你也可以指…

springboot控制接口返回的字段_SpringBoot实战:SpringBoot之Rest Full接口自定义返回数据类型(ResponseBodyAdvice)...

我们在日常开发的过程中&#xff0c;经常会要求统一返回数据格式。如要求统一访问格式为{"success": 请求是否成功,"message": 请求消息,"data": 请求数据}那我们要如何实现呢&#xff0c;接下来将演示接口自定义返回数据类型一般接口返回的数据…

c html转为datatable,C#中DataTable导出为HTML格式的方法

前言在C#中DataTable导出数据的时候&#xff0c;我们需要HTML格式的输出数据, 这时候就需要使用将DataTable导出为到HTML格式的方法了&#xff0c;以下代码就可以帮助我们达到目的。首先,我们要绑定DataTable和 DataGridView。一、通过DataTable绑定DataGridView1. 创建DataTab…

python扇贝单词书_Python脚本 扇贝单词书爬取

这是一个用于爬取扇贝单词书的脚本 将在.py文件目录得到一个名为out.txt的输出文件 主要使用了selenium库&#xff08;webdriver&#xff09; 使用方式&#xff1a; 更改 13行中指向webdriver驱动器 代码中使用了firefox提供的驱动器 Path r’C:\Users\pc\Downloads\geckodriv…

mybatis insert 忽略 联合唯一索引_MySQL实战中,Insert语句的使用心得总结

提到MySQL的Insert语句&#xff0c;你肯定不陌生&#xff0c;或许已经张口就来&#xff1a;不就是insert into table values(xxx,xxx,xxx)嘛&#xff01;没错&#xff0c;但在实战中&#xff0c;根据不同的需求场景&#xff0c;插入操作在语法、执行方式上的用法多种多样。今天…

html提交多个正则表达式,将多个html文件的正则表达式结果写入.txt outfile

我无法将从多个html文件(文本不是英文)获得的正则表达式结果写入.txt文件。它将它们打印成屏幕上新行的几个字符串&#xff0c;但是当我尝试将它写入outfile时&#xff0c;它只会写入一个随机字符串。我的代码看起来像这样&#xff1a; 你能帮我怎么把所有的字符串写入所有大约…

eureka集群只注册一个_Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇

Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇本文主要内容&#xff1a;1&#xff1a;spring cloud整合Eureka总结本文是由凯哥(凯哥Java:kagejava)发布的《spring cloud系列》教程的总第十篇&#xff1a;本文是几个维度中的第一个维度&#xff1a;注册与发现维度…

lepus监控oracle数据库_lepus天兔数据库监控系统搭建记录

一、开场白去年的锅&#xff0c;今年才接。时间都耗在了各种业务测试上&#xff0c;上周刚刚把锅甩了&#xff0c;赶紧把以前没完成的事做完。二、lepus简介简洁、直观、强大的开源数据库监控系统&#xff0c;MySQL/Oracle/MongoDB/Redis一站式性能监控&#xff0c;让数据库监控…

html鼠标滚轴后下一页,鼠标滚动有一页ppt不能马上下翻,而是上下移动,移动到一定位置后才翻到下一页,这是怎么回事?怎么解决?...

一般是这张幻灯片里有图片才会出现这种问题&#xff0c;你的图片格式有问题&#xff0c;点击图片&#xff0c;再点击格式&#xff0c;把图片格式换一下就好了同问&#xff0c;但不是下面两个原因&#xff0c;都试过没用1&#xff0c;ppt的比例太大&#xff0c;缩小比例即可。Ct…

resnet keras 结构_Day146:第二讲 ResNet

出处论文&#xff1a;Deep Residual Learning for Image Recognition作者&#xff1a;Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian SunImageNet Top5错误率&#xff1a; 3.57%主要思想主要体现在 Residual(残差)&#xff0c;从名字就可以看出&#xff0c;不学绝对值&#x…