緩存:redis 安全框架:shiro 文檔框架:swagger2 持久層框架:Mybatis plus 開源工具:hutool ,全部你想要的工具,裏面幾乎都有,包括excel導出導入 https://www.hutool.club/docs/#/
一、基於MyBatis plus基本的CRUD 二、RedisUtil已封裝,可以使用 三、Shiro下的權限認證、角色認證、Session過時認證,異地登陸檢查,單機版、分佈式皆適用 四、動態多數據源 https://mp.baomidou.com/guide/dynamic-datasource.html 五、swagger2 六、統一的報文處理,異常處理、請求日誌打印(AOP) 七、歸入了很是豐富的工具類 hutool https://github.com/changyu3590/hutool.git 八、支持事務 九、定時任務 十、基於mybatis-plus的審計(公共字段自動填充)
aop:html
這裏主要用於切面日誌,就是輸出日誌git
base:github
基礎的常量類:redis
哈哈,就一個Excel模板存放的地址;spring
父類Controller:跨域
如今裏面只有個全局異常的處理,全部的Exception會捕捉到這裏,而後集中處理返回自定義報文,方便統一異常報文格式瀏覽器
父類Service:緩存
裏面只有個變量。。。用於自動裝配Dao接口的,後面有業務service的話,能夠先直接繼承這個Service,泛型裏直接傳入對應的Dao類就能夠用了:this.dao.xxxxxxx();安全
ServiceException:這個沒啥可看的就是自定義異常,爲了規範,業務中時常要本身拋出一些業務異常,配合全局異常捕獲,隨時隨地拋出。可千萬不能retrun到controller,再以一個map返回去,這樣很容易出Bug。cookie
StartupRunner:
程序啓動後加載,這裏你能夠根據業務須要寫你想要的,沒啥事就打個日誌就能夠了。
TimeoutException:
同ServiceException,專門用來返回超時或異地登陸的報文的
config:
WebMvcListener:
它主要負責跨域配置、控制哪些路由須要進入Interceptor攔截器,哪裏不須要。@Bean那裏用於把Interceptor交給spring管理,生產單例的對象,沒啥可要說的。
Interceptor:
preHandler首先會被觸發。一般我這裏主要用於異地登陸檢查,由於結合了shiro,瀏覽器每次請求都會傳遞cookie裏的sessionId,這裏就是結合sessionId,實現了一個異地登陸檢查。若是項目沒有引入shiro的話,這裏可能徹底用於本身設計的token的校驗檢查,看看每次用戶發送的Request裏傳過來的token是否還存在在redis中,不存在就盤他,存在就刷新過時時間,固然key通常是token,value通常是當前用戶信息。
AutoTableField:
用的是mybatis plus裏的自動填充註解,@TableField(value = "create_by", fill = FieldFill.INSERT) ,這個註解標註的字段將會在這個類裏面實現,主要用於建立時間、修改時間、建立人、修改人。
MybatisConfig:
配置分頁插件,照這樣寫就行了。
RedisConfig、RedisUtil:沒啥可說的,配置+封裝,而後就能夠用了。
CustomeRelam:
shiro中最重要的實現部分,主要實現用戶密碼認證(後續的session過時認證,也會由shiro自動處理)、填裝用戶信息到Subject裏方便後續直接從Subject裏取得在線用戶信息。再一個就是獲取角色權限信息,配合@RequireRoles、@RequirePermissions,這兩個註解會檢查你AuthorizationInfo中加載的當前用戶的角色及權限。
ShiroConfig:
shiro的所有配置就在這裏,這裏粘貼了部分代碼,如圖可看到它設定了哪些路由是須要anno即不檢查session的,剩下的都會authc就是檢查session信息,沒登陸就滾一邊去。固然一些靜態資源須要放醒,例如swagger。因爲單機版幾乎在商業中不存在,因此shiro最好配合redis,讓shiro自動將session存儲到redis,用redis管理session。
ScheduledConfig:
自帶的定時任務配置類,足夠用了。 具體怎麼用,面向百度,很簡單。
Controller
UserController:本身寫的一個關於用戶的接口,demo而已。
dao
RoleDao、UserDao:持久層接口,繼承了BaseMapper CRUD就一套都有了。下圖展現其中一個dao
dto:
GeneralResponseDto:
自定義交互報文,要求全部的報文返回統一該改格式返回。
entity:實體類
User:
實體類,註解都是mybatis plus裏的註解,並繼承了AttributeEntity
serviceimp:業務層 沒啥可說的,裏面就是一些demo,夾雜了一個mybatis plus的分頁查詢。
resources:
mapper:mybatis xml都在這裏
application.yml: 公共配置
application-dev.yml: 本地配置
紅框中數據源的配置格式基於mybatis plus中的多數據源配置, 參考官方文檔便可
banner.txt:個性化的輸出
最後附上該項目的倉庫地址:
https://gitee.com/yuchang1/spring-demo 還有個同款jpa的以下: https://gitee.com/yuchang1/spring-demo-jpa