服务端搭建
开发工具配置
服务端工程使用IntellijIDEA开发,IDEA开发环境配置如下:
1、首先配置JDK
2、配置maven环境
安装maven3.3.9,过程略。
关于maven仓库有以下配置方法:
(1)已经有私服地址可在setting.xml中配置私服地址
<!--在setting.xml中<servers>段增加-->
<server>
<id>maven‐releases</id>
<username>私服账号</username>
<password>私服密码</password>
</server>
<server>
<id>maven‐snapshots</id>
<username>私服账号</username>
<password>私服密码</password>
</server>
<!--在<mirrors>添加-->
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>私服地址</url>
</mirror>
(2)从中央仓库下载
不作任何配置,maven自行从中央仓库下载,也可使用阿里官网Maven库:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
(3)使用本地仓库
本教程使用本地仓库配置。在maven的setting.xml文件中配置本地仓库的路径,路径位置不要使用中文,配置例子如下:
在IDEA中选择setting.xml文件,自动找到本地仓库目录 ,如下图:
3、配置编码
4、配置快捷键
IDEA可以集成Eclipse的快捷键
如需自定义则点击“copy”复制一份进行修改
5、自动导入包 快捷方式
idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动 Alt+Enter
设置
设置idea导入包
6、代码模板
自定义自己的代码模板
7、提示忽略大小写
默认IDEA的提示是区分大小写的,这里设置为提示忽略大小写
8、Lombok
Lombok是一个实用的java工具,使用它可以消除java代码的臃肿,Lombok提供一系列的注解,使用这些注解可以不用定义getter/setter、equals、构造方法等,它会在编译时在字节码文件自动生成这些通用的方法,简化开发人员的工作。
项目官方地址:https://www.projectlombok.org/
比如上节创建的UserTest模型,@Data
注解可以自动生成getter/setter方法, @ToString
生成tostring方法。
使用方法:
① 在项目中添加Lombok的依赖
作用:项目在编译时根据Lombok注解生成通用方法,依赖如下:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
② 在IDEA开发工具中添加Lombok插件
作用:使用IDEA开发时根据Lombok注解生成通用方法,不报错。
9、配置虚拟机内存
修改idea64.exe.vmoptions(64位电脑选择此文件)
一个例子,电脑内存8G,设置如下:
-Xms1024m -Xmx4096m -XX:MaxPermSize=1024m -XX:ReservedCodeCacheSize=1024m
Nacos服务发现与配置中心
微服务开发需要构建服务发现中心、配置中心,本项目采用Nacos来实现。
Mybatis Plus
本项目数据库使用 mysql-community-5.7,请自行安装MySQL数据库。
本项目持久层采用Mybatis Plus作为技术构架,Mybatis Plus是在Mybatis基础上作了很好的封装,方便系统开发。
学习Mybatis Plus详见 Mybatis-Plus介绍。
导入基础工程
将基础工程导入IDEA,如下是基础工程结构图:
工程名 | 说明 |
---|---|
shanjupay | 闪聚支付父工程 |
shanjupay-common | 项目通用工程包括:常用工具类和分页信息封装VO等 |
导入项目初始SQL
使用客户端连接MySQL,执行 shanjupay-init.sql ,执行脚本自动创建数据库并导入初始数据。
数据库清单如下:
数据库名称 | 数据内容 |
---|---|
shanjupay_merchant_service | 用户中心数据 |
shanjupay_transaction | 交易服务数据库 |
备注:数据库、表中的字段以及表关系会在后续开发过程中随用随讲。
搭建项目服务
本节搭建如下项目工程:
服务名 | 职责 |
---|---|
商户平台应用(shanjupay-merchant-application) | 为前端提供商户管理功能 |
商户服务API(shanjupay-merchant-api) | 定义商户服务提供的接口 |
商户服务(shanjupay-merchant-service) | 实现商户服务的所有接口 |
三个工程在架构中的位置如下:
搭建商户平台应用工程
在基础工程的基础上创建商户平台应用工程。
1、选中shanjupay工程,右键选择新建Module
2、选择Maven和JDK1.8
3、填写ArtifactId: shanjupay-merchant-application
,设置Modoule Name:shanjupay-merchant-application
4、点击Fininsh完成创建
5、添加依赖,完善pom.xml
<?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>shanjupay</artifactId>
<groupId>com.shanjupay</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.shanjupay</groupId>
<artifactId>shanjupay-merchant-application</artifactId>
<dependencies>
<!-- Nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Nacos注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Dubbo启动器 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<!-- Web启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- log4j4启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 注释处理器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- 健康检查,运维相关 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 测试启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Swagger依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
</dependencies>
</project>
6、配置bootstrap.yml
server:
port: 57010 #启动端口 命令行注入
max-http-header-size: 100KB
nacos:
server:
addr: 127.0.0.1:8848
spring:
application:
name: merchant-application
main:
allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定
cloud:
nacos:
discovery:
server-addr: ${
nacos.server.addr}
namespace: 2aac6f5e-f974-464c-8261-ce06c0566687
cluster-name: DEFAULT
config:
server-addr: ${
nacos.server.addr} # 配置中心地址
file-extension: yaml
namespace: 2aac6f5e-f974-464c-8261-ce06c0566687 # 命令行注入
group: SHANJUPAY_GROUP # 聚合支付业务组
ext-config:
-
refresh: true
data-id