guns開發程式功能介紹
在Guns專案包結構中,後端程式分為三個包區分開,config、core、modularconfig包存放為專案的配置.
core包存放專案的核心機制,以及專案公用的列舉、異常、常量等。
modular包存放專案的業務程式碼,modular包下可再按業務劃分,或者直接分為controller、entity、mapper等包。
SpringMvcConfiguration是對spring mvc框架的配置。
這個類中,配置了認證和鑑權的spring mvc攔截器
以下是對其中方法的講解
addInterceptors:
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authJwtTokenSecurityInterceptor);
registry.addInterceptor(permissionSecurityInterceptor);
}
Jackson2ObjectMapperBuilderCustomizerjackson2ObjectMapperBuilderCustomizer:將long轉化為string
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance).serializerByType(Long.TYPE, ToStringSerializer.instance);
}
配置了一些錯誤介面的重寫,讓錯誤介面更加美觀,並且如果是json請求,也會覆蓋spring public CustomErrorAttributes gunsErrorAttributes() {
}
另外配置了靜態資源對映,也就是訪問/assets/**路徑時,直接程式返回/assets/目錄下的資原始檔
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");
下面是core中const包下的ProjectConstants
這其中配置了專案的常量
然後是error包下的CustomErrorAttributes,主要將將系統管理未知錯誤異常,輸出格式重寫為我們熟悉的響應格式
public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions attributeOptions)
而GlobalExceptionHandler類則是全域性異常處理器,攔截控制器層的異常
ErrorResponseData missingParam方法攔截請求引數缺失異常
ErrorResponseData httpMessageNotReadable攔截HttpMessageConverter轉化異常,一般為json解析異常
ErrorResponseData httpMediaTypeNotSupport攔截不支援媒體型別異常
ErrorResponseData methodNotSupport不支援的http與method
ErrorResponseData notFound返回404
ErrorResponseData methodArgumentNotValidException請求引數校驗失敗,攔截 @Valid 校驗失敗的情況
ErrorResponseData bindException請求引數校驗失敗,攔截 @Validated 校驗失敗的情況兩個註解 @Valid 和 @Validated 區別是後者可以加分組校驗,前者沒有分組校驗
ErrorResponseData bindException攔截 @TableUniqueValue 裡丟擲的異常
String authErro攔截全校校驗一類的異常這裡重點做一類特殊處理,也就是對過期登入用使用者
如果使用者登入過期,並且為ajax請求,則response的header增加session-timeout的標識
如果使用者登入過期,不是ajax請求,則直接跳轉到登入頁面,並提示會話超時
ErrorResponseData businessError攔截業務程式碼丟擲的異常
ErrorResponseData persistenceException攔截mybatis資料庫操作的異常
ErrorResponseData serverError攔截未知的執行時異常
ErrorResponseData renderJson渲染異常json
String getArgNotValidMessage獲取請求引數不正確的提示資訊
String renderLoginResult渲染登入介面
Exception包下的丟擲業務異常
public class BusinessException extends ServiceException
Security包下的
BaseSecurityInterceptor類用來進行基礎的許可權過濾
AuthJwtTokenSecurityInterceptor鑑權過濾器
PermissionSecurityInterceptor 許可權校驗過濾器
Modular包下啟動類
GunsServletInitializer是web程式啟動類
各種sql檔案的生成
-db.migration目錄存放了flyway指令碼
使用flyway可以讓我們不用手動初始化sql指令碼,每次Guns啟動會自動檢測這個目錄下的指令碼有沒有被初始化過,第一次執行專案會執行所有的sql指令碼。
application.yml配置檔案
這個配置檔案中存放了專案的基礎配置,包括spring,tomcat,spring mvc,mybatis-plus等配置。
logback-spring.xml日誌配置檔案
前端
-assets // 靜態檔案,存放css和js
| |-common // Easyweb框架原始碼,建議不要修改,統一由作者升級
| |-expand // Guns封裝的元件,以及引入的第三方元件
| |-modular // 業務程式碼的js
| |-business // 這裡寫您的業務程式碼js
| |-system // Guns自帶業務的程式碼js
|-pages // 存放頁面html檔案
| |-component // 前端通用元件頁面
| |-layout // 前端佈局元件
| |-modular // 業務程式碼的html
| |-business // 這裡寫您的業務程式碼html
| |-system // Guns自帶業務的程式碼html
| |-404.html // 404頁面
| |-forget.html // 忘記密碼頁面
| |-index.html // 登入之後的主頁面
| |-login.html // 登入頁面
| |-register.html // 註冊頁面