SpringBoot优点达项目实战:项目基本配置(二)
文章目录
- SpringBoot优点达项目实战:项目基本配置(二)
- 1、项目初始化配置
- 2、MyBatisPlus配置
- 3、Knife配置
- 4、定义统一返回数据结构
1、项目初始化配置
创建application.yml文件
在web-admin模块的
src/main/resources
目录下创建application.yml
配置文件,内容如下:
server:port: 8080
创建SpringBoot启动类
在web-admin模块下创建
com.youdianda.AdminWebApplication
类,内容如下:
@SpringBootApplication
public class AdminWebApplication {public static void main(String[] args) {SpringApplication.run(AdminWebApplication.class, args);}
}
2、MyBatisPlus配置
Mybatis-Plus为公用工具,故将其配置于common模块。具体配置可参考其官方文档。
在common模块的pom.xml文件中增加如下内容:
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>
</dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId>
</dependency>
在model模块的pom.xml文件中增加如下内容
因为model模块下的实体类中需要配置Mybatis-Plus相关注解,故也需引入Mybatis-Plus依赖
<dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency>
</dependencies>
在web-admin模块的
application.yml
文件增加如下内容:
spring:datasource:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8username: <username>password: <password>hikari:connection-test-query: SELECT 1 # 自动检测连接connection-timeout: 60000 #数据库连接超时时间,默认30秒idle-timeout: 500000 #空闲连接存活最大时间,默认600000(10分钟)max-lifetime: 540000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟maximum-pool-size: 12 #连接池最大连接数,默认是10minimum-idle: 10 #最小空闲连接数量pool-name: SPHHikariPool # 连接池名称#用于打印框架生成的sql语句,便于调试
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
注意:需根据实际情况修改hostname
、port
、database
、username
、password
。
在common模块下创建
com.youdianda.common.mybatisplus.MybatisPlusConfiguration
类,内容如下:
@Configuration
@MapperScan("com.youdianda.youdianda.web.*.mapper")
public class MybatisPlusConfiguration {
}
注意:@MapperScan()
的包路径需要根据实际情况进行修改。
3、Knife配置
pom文件配置
在web模块的pom.xml文件添加如下内容
因为web-app模块同样需要Knife4j依赖,故在两个的父工程引入依赖即可
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>
在model模块的pom.xml文件添加上述内容
因为model模块下的实体类需要配置Knife4j相关注解,故也需引入Knife4j依赖
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>
配置类
后台管理系统和移动端的接口配置并不相同,所以需各自编写一个配置类。在web-admin模块下创建
com.youdianda.web.admin.custom.config.Knife4jConfiguration
类,内容如下:
@Configuration
public class Knife4jConfiguration {@Beanpublic OpenAPI customOpenAPI() {return new OpenAPI().info(new Info().title("咨询后台管理系统API").version("1.0").description("咨询后台管理系统API"));}
}
注意:pathsToMatch
参数需要根据实际情况进行配置。
启动项目访问knife,访问地址:http://localhost:8080/doc.html#/home
4、定义统一返回数据结构
统一接口返回数据结构:为方便前端对接口数据进行处理,统一接口返回数据结构是一个良好的习惯。
以下是所有接口统一返回的数据结构
{"code": 200,"message": "正常","data": {"id": "1","name": "zhangsan","age": 10}
}
在common的com.youdianda.common.result包下创建Result类
/*** 全局统一返回结果类*/
@Data
public class Result<T> {//返回码private Integer code;//返回消息private String message;//返回数据private T data;public Result() {}private static <T> Result<T> build(T data) {Result<T> result = new Result<>();if (data != null)result.setData(data);return result;}public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {Result<T> result = build(body);result.setCode(resultCodeEnum.getCode());result.setMessage(resultCodeEnum.getMessage());return result;}public static <T> Result<T> ok(T data) {return build(data, ResultCodeEnum.SUCCESS);}public static <T> Result<T> ok() {return Result.ok(null);}public static <T> Result<T> fail() {return build(null, ResultCodeEnum.FAIL);}public static <T> Result<T> fail(Integer code,String message){Result<T> result = build(null);result.setCode(code);result.setMessage(message);return result;}
}
ResultCodeEnum
为方便管理,可将返回码
code
和返回消息message
封装到枚举类。
/*** 统一返回结果状态信息类*/
@Getter
public enum ResultCodeEnum {SUCCESS(200, "成功"),FAIL(201, "失败"),PARAM_ERROR(202, "参数不正确"),SERVICE_ERROR(203, "服务异常"),DATA_ERROR(204, "数据异常"),ILLEGAL_REQUEST(205, "非法请求"),REPEAT_SUBMIT(206, "重复提交");private final Integer code;private final String message;ResultCodeEnum(Integer code, String message) {this.code = code;this.message = message;}
}
注意:由于Result
和ResultCodeEnum
中使用@Data
、@Getter
注解,因此需要再common模块中引入lombok
依赖。
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>