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>