第一章 会员管理项目父模块搭建
1.1 创建模块mengxuegu-member
mengxuegu-member 作为所有工程的父工程,用于管理项目的所有依赖。
1.2 添加pom依赖,pom.xml
文件位于:会员管理系统/03-配套资料/pom文件/member-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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cc</groupId>
<artifactId>cc-member</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- springboot依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
<!--依赖版本管理-->
<properties>
<mybatis-plus.version>3.3.2</mybatis-plus.version>
<druid.version>1.1.21</druid.version>
<fastjson.version>1.2.8</fastjson.version>
<commons-lang.version>2.6</commons-lang.version>
<commons-collections.version>3.2.2</commons-collections.version>
<commons-io.version>2.6</commons-io.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<!--实际依赖-->
<dependencies>
<!--mybatis-plus启动器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--生成setter,getter-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--Spring Seucrity 加密模块-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-crypto</artifactId>
</dependency>
<!-- yml配置处理器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- 工具类依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
</dependencies>
</project>
第二章 公共工具模块搭建
用于管理通用的工具类
2.1 创建模块 mengxuegu-member-util
(点击父模块,创建子模块)
2.2 添加自定义的日志模块配置
1.将 logback.xml 日志配置文件添加到 resources 目录下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</layout>
</appender>
<root level="info">
<appender-ref ref="stdout" />
</root>
</configuration>
文件位于:会员管理系统/03-配套资料/logback.xml
2.3 整合 Lombok
Lombok 介绍
官方网址: https://www.projectlombok.org/features/all
Lombok 工具提供一系列的注解,使用这些注解可以不用定义getter、setter、equals、构造方法等,可以消除java代码的臃肿,它会在编译时在字节码文件自动生成这些通用的方法,简化开发 人员的工作
Lombok 使用
1.我们在父模块中已经添加了相关的依赖,无需再次添加
<!--生成setter,getter-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2.IDEA 安装 lombok 插件
作用: 使用IDEA开发时,使用 Lombok 注解生成方法不报错
先点击file->settings
2.4 规范统一响应枚举 ResultEnum
ResultEnum 枚举类是为了搭配 Result 规范响应的结果。
在 mengxuegu-member-util 模块创建 com.mengxuegu.member.base.ResultEnum 响应结果枚举
package com.cc.member.base;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ResultEnum {
// 成功
SUCCESS(2000, "成功"),
// 错误
ERROR(999, "错误");
private Integer code;
public String desc;
}
文件位于:会员管理系统/03-配套资料/工具类/ResultEnum.java
2.5 规范统一响应结果 Result
1.说明:为了规范响应的结果,创建一个Result 类来统一响应JSON格式:
code 操作代码、flag 是否成功、message 提示信息、 data 自定义数据。
2. 在 mengxuegu-member-util 创建com.mengxuegu.member.base.Result用于封装接口统一响应结果
package com.cc.member.base;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
/**
* 用于封装接口统一响应结果
*/
@Data
public class Result implements Serializable {
private static final Logger logger = LoggerFactory.getLogger(Result.class);
private static final long serialVersionUID = 1L;
/**
* 响应业务状态码
*/
private Integer code;
/**
* 是否正常
*/
private Boolean flag;
/**
* 响应信息
*/
private String message;
/**
* 响应中的数据
*/
private Object data;
public Result(Integer code, String message, Object data) {
this.code = code;
this.message = message;
this.data = data;
this.flag = code == ResultEnum.SUCCESS.getCode() ? true: false;
}
public static Result ok() {
return new Result(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getDesc(), null);
}
public static Result ok(Object data) {
return new Result(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getDesc(), data);
}
public static Result ok(String message, Object data) {
return new Result(ResultEnum.SUCCESS.getCode(), message, data);
}
public static Result error(String message) {
logger.debug("返回错误:code={}, message={}", ResultEnum.ERROR.getCode(), message);
return new Result(ResultEnum.ERROR.getCode(), message, null);
}
public static Result build(int code, String message) {
logger.debug("返回结果:code={}, message={}", code, message);
return new Result(code, message, null);
}
public static Result build(ResultEnum resultEnum) {
logger.debug("返回结果:code={}, message={}", resultEnum.getCode(), resultEnum.getDesc());
return new Result(resultEnum.getCode(), resultEnum.getDesc(), null);
}
public String toString() {
return JSON.toJSONString(this);
}
}
第三章 API接口模块搭建
(与第二章工具模块同一级)
编写会员管理系统业务逻辑并向外提供 RESTful 风格接口给前端调用
3.1 创建mengxuegu-member-api 接口模块
3.2 配置mengxuegu-member-api接口模块中的pom.xml
mengxuegu-member-api 的 pom.xml 中添加 工具模块 和 web启动器依赖。
<?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>cc-member</artifactId>
<groupId>com.cc</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cc-member-api</artifactId>
<dependencies>
<!--依赖工具模块-->
<dependency>
<artifactId>cc-member-util</artifactId>
<groupId>com.cc</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--web启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<!--编译时,默认情况下不会将 mapper.xml文件编译进去,
src/main/java 资源文件的路径,
**/*.xml 需要编译打包的文件类型是xml文件 -->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<!--打包插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--指定启动类-->
<mainClass>com.cc.member.MemberApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
位于:会员管理系统/03-配套资料/pom文件/api-pom.xml