如何用js做网站,辽宁移动惠生活app官方版,阐述网站建设的步骤过程,建设部网站事故快报一、前言 接下来是开展一系列的 SpringCloud 的学习之旅#xff0c;从传统的模块之间调用#xff0c;一步步的升级为 SpringCloud 模块之间的调用#xff0c;此篇文章为第一篇#xff0c;即不使用 SpringCloud 组件进行模块之间的调用#xff0c;后续会有很多的文章循序渐…一、前言 接下来是开展一系列的 SpringCloud 的学习之旅从传统的模块之间调用一步步的升级为 SpringCloud 模块之间的调用此篇文章为第一篇即不使用 SpringCloud 组件进行模块之间的调用后续会有很多的文章循序渐进的添加和融合SpringCloud 组件。慢慢来。
二、工程创建
2.1 创建父工程 创建一个空的父 maven工程 SpringCloudpom.xml 内容如下所示SpringCloud 采用的是 H 版本SpringBoot 采用的是 2.2.2 版本。
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns: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.springcloud/groupIdartifactIdSpringCloud/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingmodulesmodulecloud-provider-payment8001/modulemodulecloud-consumer-order80/modulemodulecloud-api-commons/module/modules!-- 统一管理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.16.18/lombok.versionmysql.version5.1.47/mysql.versiondruid.version1.1.16/druid.versionmybatis.spring.boot.version1.3.0/mybatis.spring.boot.version/properties!-- 子模块继承之后提供作用锁定版本子module不用写groupId和version --dependencyManagementdependencies!--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 alibaba 2.1.0.RELEASE--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.1.0.RELEASE/versiontypepom/typescopeimport/scope/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion${druid.version}/version/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.spring.boot.version}/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version/dependencydependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion${log4j.version}/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/versionoptionaltrue/optional/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.2.2.RELEASE/versionconfigurationforktrue/forkaddResourcestrue/addResources/configuration/plugin/plugins/build
/project
2.2 创建支付模块 在父工程中创建 cloud-provider-payment8001 子模块为其他的模块提供服务pom.xml 内容如下所示
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns: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/modelVersionparentgroupIdcom.springcloud/groupIdartifactIdSpringCloud/artifactIdversion1.0-SNAPSHOT/version/parentartifactIdcloud-provider-payment8001/artifactIddependenciesdependencygroupIdcom.springcloud/groupIdartifactIdcloud-api-commons/artifactIdversion${project.version}/version/dependencydependencygroupIdorg.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/artifactIdversion1.1.10/version/dependency!--mysql-connector-java--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!--jdbc--dependencygroupIdorg.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/artifactIdscopetest/scope/dependency/dependencies
/project application.yml 的内容如下所示
server:port: 8001spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:3306/db2019?useUnicodetruecharacterEncodingutf-8useSSLfalseusername: rootpassword: 123456mybatis:mapperLocations: classpath:mapper/*.xmltype-aliases-package: com.springcloud.entities 主启动类的内容如下所示
package com.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;SpringBootApplication
public class PaymentMain8081 {public static void main(String[] args) {SpringApplication.run(PaymentMain8081.class,args);}
} 建表语句如下
create DATABASE db2019;
use db2019;
CREATE TABLE payment (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ID,serial varchar(200) DEFAULT ,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8insert into payment values(1,我爱哇哈哈); dao 层代码如下所示
package com.springcloud.dao;import com.springcloud.entities.Payment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;Mapper
public interface PaymentDao {int create(Payment payment);Payment selectPaymentById(Param(id) Long id);
} mapper.xml 内容如下所示
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.springcloud.dao.PaymentDaoresultMap idBaseResultMap typecom.springcloud.entities.Paymentid columnid propertyid jdbcTypeBIGINT/result columnserial propertyserial jdbcTypeVARCHAR//resultMapinsert idcreate parameterTypePayment useGeneratedKeystrue keyPropertyidINSERT INTO payment(SERIAL) VALUES(#{serial});/insertselect idselectPaymentById parameterTypeLong resultMapBaseResultMap SELECT * FROM payment WHERE id#{id};/select/mapper service 层代码如下所示
package com.springcloud.service;import com.springcloud.entities.Payment;public interface PaymentService {int create(Payment payment);Payment selectPaymentById( Long id);
}
package com.springcloud.service.impl;import com.springcloud.dao.PaymentDao;
import com.springcloud.entities.Payment;
import com.springcloud.service.PaymentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;Service
public class PaymentServiceImpl implements PaymentService {AutowiredPaymentDao paymentDao;Overridepublic int create(Payment payment) {return paymentDao.create(payment);}Overridepublic Payment selectPaymentById(Long id) {return paymentDao.selectPaymentById(id);}
} controller 层代码如下所示
package com.springcloud.controller;import com.springcloud.entities.CommonResult;
import com.springcloud.entities.Payment;
import com.springcloud.service.PaymentService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
RestController
Slf4j
public class PaymentController {ResourcePaymentService paymentService;PostMapping(/payment/create)public CommonResult create(RequestBody Payment payment){int result paymentService.create(payment);log.info(*****插入操作返回结果: result);if(result 0){return new CommonResult(200,插入成功,result);}else{return new CommonResult(404,插入失败,null);}}GetMapping(/payment/get/{id})public CommonResultPayment selectPaymentById(PathVariable(id) Long id){Payment payment paymentService.selectPaymentById(id);log.info(*****查询操作返回结果: payment);if(payment ! null){int a 2;return new CommonResult(200,查询成功,payment);}else{return new CommonResult(404,未查询到数据id,null);}}}至此支付模块创建完成此模块可以对外提供新增和查询数据的功能。
2.3 创建订单模块 创建 cloud-consumer-order80 订单模块使用户可以通过统一的经过订单模块调用支付模块pom.xml 内容如下所示
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns: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/modelVersionparentgroupIdcom.springcloud/groupIdartifactIdSpringCloud/artifactIdversion1.0-SNAPSHOT/version/parentartifactIdcloud-consumer-order80/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdcom.springcloud/groupIdartifactIdcloud-api-commons/artifactIdversion${project.version}/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies
/project application.yml 的内容如下所示
server:port: 80主启动类的内容如下所示
package com.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;SpringBootApplication
public class OrderMain80 {public static void main(String[] args) {SpringApplication.run(OrderMain80.class,args);}
} 由于远程调用需要使用 RestTemplate 类所以需要创建一个配置类内容如下所示
package com.springcloud.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;Configuration
public class ApplicationContextConfig {Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}controller 层代码如下所示
package com.springcloud.controller;import com.springcloud.entities.CommonResult;
import com.springcloud.entities.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;RestController
Slf4j
public class OrderController {Resourceprivate RestTemplate restTemplate;public static final String PaymentSrv_URL http://localhost:8001;GetMapping(/consumer/payment/create)public CommonResult create(Payment payment){// 客户端用浏览器是get请求但是底层实质发送post调用服务端8001return restTemplate.postForObject(PaymentSrv_URL/payment/create,payment,CommonResult.class);}GetMapping(/consumer/payment/get/{id})public CommonResult getPayment(PathVariable Long id){return restTemplate.getForObject(PaymentSrv_URL /payment/get/id, CommonResult.class, id);}}2.4 创建通用模块 创建 cloud-api-commons 通用模块给其他的子模块提供公共服务用的pom.xml 内容如下所示
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns: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/modelVersionparentgroupIdcom.springcloud/groupIdartifactIdSpringCloud/artifactIdversion1.0-SNAPSHOT/version/parentgroupIdcom.springcloud/groupIdartifactIdcloud-api-commons/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.1.0/version/dependency/dependencies
/project 两个实体类的代码如下所示
package com.springcloud.entities;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;Data
AllArgsConstructor
NoArgsConstructor
ToString
public class CommonResultT {private Integer code;private String message;private T data;private CommonResult(Integer code,String message){this(code,message,null);}
}
package com.springcloud.entities;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;Data
AllArgsConstructor
NoArgsConstructor
public class Payment implements Serializable {private Long id;private String serial;
}三、测试 现在的调用流程为浏览器访问订单模块对外提供的服务然后订单模块再调用支付模块完成服务的调用在浏览器输入 http://localhost:80/consumer/payment/create?serial4567 测试插入功能如下图 在浏览器输入 http://localhost:80/consumer/payment/get/1 测试查询功能如下图