管理咨询网站建设,电商网站建设与维护试题,网页源代码下载音乐,机关单位网站建设工作方案SpringCloud------代码demo#xff08;二#xff09;
编码实操 以订单——支付微服务模块作为基础#xff0c;开始逐渐扩充
微服务架构编码构建
1.约定 配置 编码 2.IDEA新建project工作空间 3.Rest微服务工程构建 总父工程 POM project module 首先创建maven项…SpringCloud------代码demo二
编码实操 以订单——支付微服务模块作为基础开始逐渐扩充
微服务架构编码构建
1.约定 配置 编码 2.IDEA新建project工作空间 3.Rest微服务工程构建 总父工程 POM project module 首先创建maven项目project
项目编码配置 字符编码选择 注解生效配置 选择Default 项目jdk版本配置
父工程pom文件设置
删掉父工程中的src目录 1.maven坐标以及打包方式
groupIdcom.springcloud2022/groupIdartifactIdSpingCloudDemo1/artifactIdversion1.0-SNAPSHOT/version!-- 修改打包方式,pom总的父工程--packagingpom/packaging2.统一管理jar包版本紧跟packaging
!--统一管理jar包版本--propertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetjunit.version4.12/junit.versionlog4j.version1.2.17/log4j.versionlombok.version1.18.10/lombok.versionmysql.version8.0.18/mysql.versiondruid.version1.1.16/druid.versionmybatis.spring.boot.version1.3.0/mybatis.spring.boot.version/properties3.父工程配置依赖管理 dependencyManagement作用 子模块继承之后提供作用锁定版本子module不用写groupId和version 用于父类管理一般是最顶层的父pom才会使用 【dependencyManagement只是声明依赖但是并不引入依赖。 因此子项目需要显示的声明需要引入的依赖】
maven跳过单元测试
在IDEA中标注跳过单元测试能够有效的加快项目的启动速度 父工程创建完成执行mvn:install 将父工程发布到仓库方便子工程继承.
完整的pom文件
?xml version1.0 encodingUTF-8 ?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.springcloud2022/groupIdartifactIdSpingCloudDemo1/artifactIdversion1.0-SNAPSHOT/version
!-- 修改打包方式--packagingpom/packaging!--统一管理jar包版本--propertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetjunit.version4.12/junit.versionlog4j.version1.2.17/log4j.versionlombok.version1.18.10/lombok.versionmysql.version8.0.18/mysql.versiondruid.version1.1.16/druid.versionmybatis.spring.boot.version1.3.0/mybatis.spring.boot.version/properties!--dependencyManagement作用子模块继承之后提供作用锁定版本子module不用写groupId和version--!--子module引入了版本号就是用子module的--dependencyManagementdependenciesdependencygroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-project-info-reports-plugin/artifactIdversion3.0.0/version/dependency!--spring boot 2.2.2--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.2.2.RELEASE/versiontypepom/typescopeimport/scope/dependency!--spring cloud Hoxton.SR1--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionHoxton.SR1/versiontypepom/typescopeimport/scope/dependency!--spring cloud 阿里巴巴--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.1.0.RELEASE/versiontypepom/typescopeimport/scope/dependency!--mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/versionscoperuntime/scope/dependency!-- druid--dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion${druid.version}/version/dependency!--mybatis--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.spring.boot.version}/version/dependency!--junit--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version/dependency!--log4j--dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion${log4j.version}/version/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.7.5/versionconfigurationforktrue/forkaddResourcestrue/addResources/configuration/plugin/plugins/build/project
Rest微服务
客户端消费者8080 服务提供者8001
构建步骤
1.cloud-provider-payment8001微服务提供者支付Module模块 2.热部署Devtools 3.cloud-consumer-order80 4.工程重构
1.构建cloud-provider-payment8001
生产者构建 1.创建module 2.改POM 3.写YML 4.主启动 5.业务类 pom文件
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.springcloud2022/groupIdartifactIdSpingCloudDemo1/artifactIdversion1.0-SNAPSHOT/version/parentartifactIdcloud-provider-payment8001/artifactIdnameArchetype - cloud-provider-payment8001/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactId
!-- version/version--/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdoptionaltrue/optional/dependency/dependencies
/project
YML文件 【注意需要新建application.yml文件】并且文件类型要求为绿叶子形状
# 开发环境配置
server:# 服务器的HTTP端口默认为8080port: 8001spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSource # 当前数据库驱动类型driver-class-name: com.mysql.cj.jdbc.Driver # mysql驱动盘url: jdbc:mysql://xxxxx:3306/test?useUnicodetruecharacterEncodingutf8autoReconnecttrueallowMultiQueriestruezeroDateTimeBehaviorconvertToNullserverTimezoneAsia/ShanghaiconnectTimeout2300username: rootpassword: 123456mybatis:mapperLocations: classpath:mapper/*.xmltype-aliases-package: com.provider.springcloud.**.entity # entity所在的路径新建主启动类
package com.provider.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);}
}
2.构建cloud-consumer-order80
消费者构建cloud-consumer-order80 与生产者构建步骤相同。不同点在于端口号不同 1.先采用RestTemplate 进行Http接口调用 RestTemplate代码 RestTemplate 提供了多种便捷访问远程Http服务的方法。 是一种简单便捷访问restful服务模板类是Spring提供的用于访问Rest服务的客户端模板工具集。 使用restTemplate访问restful接口非常的简单粗暴无脑 url,requestMap,ResponseBean.class这三个参数分别代表 REST请求地址、请求参数、Http响应转换成的对象类型。 新建ApplicationContextConfig 远程调用配置类
/*** RestTemplate 配置类类*/
Configuration
public class ApplicationContextConfig {Beanpublic RestTemplate getRestTemplate(){return new RestTemplate();}
}controller业务代码
AllArgsConstructor
RestController
RequestMapping(/consumer)
public class BnsBarcodeRegexController {Autowiredprivate RestTemplate restTemplate;public static final String URL http://localhost:8001;/*** 通过调用RestTemplate,调用生产者接口*/GetMapping(/create)public CommonResultBnsBarcodeRegex create(BnsBarcodeRegex regexDto){return restTemplate.postForObject(URL/bnsBarcodeRegex/create,regexDto,CommonResult.class);}/*** 通过调用RestTemplate,调用生产者接口*/GetMapping(/parsingRegex)public CommonResultBnsBarcodeRegex parsingRegex(RequestParam(id) String id){return restTemplate.postForObject(URL/bnsBarcodeRegex/parsingRegex,id,CommonResult.class);}
}3.构建cloud-api-common 工程重构——将消费者和生产者中相同的代码抽象出来比如entity部分 抽象出来打成包然后子模块引入依赖。 新建一个 cloud-api-commons可以放重复的代码、以及api接口、一些工具类等等 构建cloud-api-common的目的是由于生产者、消费者都使用了相同的实体类BnsBarcodeRegex、CommonResult。 因此需要将其抽象出来。 通过 mvninsatll 命令 1.将生产者、消费者的实体类文件夹删除 2.在生产者、消费者的pom文件中引入cloud-api-common的依赖。
dependencygroupIdcom.springcloud2022/groupIdartifactIdcloud-api-common/artifactIdversion1.0-SNAPSHOT/version/dependency