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
而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 // 注册页面