Skip to content

ibotplus/ibothub-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于springBoot的template项目

Build Status license SpringBoot Java Maven

1. 初始化项目

  1. git clone {remote-url} 本仓库,
  2. 删除.git文件夹 修改template为项目包名 修改SwaggerConfig中的描述
  3. git init 初始化仓库
  4. git add .暂存所有提交
  5. git commit -m 'msg' 提交本次暂存
  6. git remote add origin {remote-url} 关联你项目的仓库
  7. git push 推送本次提交
  8. 修改 application.properties 中的一些配置(例如 扫描的包路径, 数据库连接等)

2. 包结构说明

src.
├─main
│  ├─java
│  │  └─com
│  │      └─ibothub
│  │          └─love
│  │              └─template                                    ---该层为基本路径 clone 完更改为项目名
│  │                  ├─annotation                              ---自定义注解
│  │                  ├─aspect                                  ---切面
│  │                  ├─config                                  ---Configuration 及 Properties
│  │                  ├─dao                                     ---dao层
│  │                  ├─exception                               ---全局异常捕获及定义异常定义
│  │                  ├─model                                   ---模型层
│  │                  │  ├─dto                                  ---数据传输对象: 必须实现序列化接口(Serializable)如果多模块交互 对象包装为dto,内部流转使用类实例对象传输 外部流转toString为Json传输
│  │                  │  ├─entity                               ---数据库实体映射对象: 封装查询结果及数据库交互的CRUD操作
│  │                  │  └─vo                                   ---视图对象层
│  │                  │    ├─req                                ---请求视图对象层, 封装前端传入数据,使用hibernate-validater校验通过后才能在Service层使用   
│  │                  │    └─resp                               ---响应视图对象层,封装业务处理后给前端的数据,必须实现序列化接口,理想情况下前端接收即可渲染,无需再次处理使
│  │                  ├─plugin                                  ---插件层, 易于被切换的工具, 对第三方jar的扩展, 可以被其他项目共用以至抽取到kbase-common包的内容,相比当前项目中的util更加抽象
│  │                  ├─service                                 ---服务层, 业务层 接口定义 所有方法必须有拥有非null的返回参数(或Optional), 根据面向对象请面向接口编程而非面向实现
│  │                  │  └─impl                                 ---服务层实现, 单一方法禁止超过80行. 如果拥有各个方法共有用代码块抽取为当前内中的private方法, 如果有其他更多业务模块使用 抽取为Util公共方法
│  │                  ├─util                                    ---工具类
│  │                  │  └─pageable                             ---分页请求相关类  
│  │                  └─web                                    
│  │                     ├─controller                           ---controller控制器层,逻辑对接前端,所有方法不允许为void, 必须有返回参数, 所有参数遵从`Swagger`接口定义      
│  │                     └─servlet                              ---filter listener servlet
│  └─resources                                                  ---resources
│      └─conf                                                   ---相关属性配置 
└─test                                                          ---JUnit测试
    └─java
        └─com
            └─ibothub
                └─love
                    └─template

2.1 bean相互转换的工具

BeanConverter:a转成b,属性相同不用写mapping ,属性不同就增加mapping ,source=a中的属性,target=b中的属性,编译完成后会在target/generated-sources下生成BeanConverterImpl可以查看是否满足需求, 更复杂的业务转换自己处理。

注意:使用BeanConverter转换的Bean最好不要使用Lombok的@Builder注解,该方法构造时无法找到父类属性,导致转换缺少父类属性

3. Spring Security with JWT

jwt.jks 生成步骤

# 生成 jks 文件
./keytool -genkey -alias jwt -keyalg RSA -keysize 2048 -keystore ibothub-jwt.jks -validity 36500 -keypass ibothub -storepass ibothub

# 验证 jkd 文件
./keytool -list -rfc --keystore ./ibothub-jwt.jks

修改KbsUserDetailsService 中数据用户接入部分

登录接口 curl -X POST "http://localhost:8000/${context-path}/login?username=&password="

登出接口 curl -X POST "http://localhost:8000/${context-path}/logout" -H "Authorization: {Bearer token}"

在未通过登录接口获取token之前,调用其他任何接口都是未授权,登录成功后token作为后续请求中Header的Authorization:{token}部分携带

登录鉴权过程中的响应码说明 (其他响应码说明见ResultCode)

响应码 响应码含义
0100 暂未使用,保留为单点登录使用
0101 用户未授权(应该先登录/login获取到token)
0102 用户不存在
0103 用户密码校验失败
0104 用户账号异常(账号锁定,账号失效等)
0105 用户已经登出(该token不再有效)
0106 token快到期,续签token(前端在请求结果中全局处理,如果得到该响应码,替换cookie中的原有token)
0107 token非法(已过期,不正确等)

4. MyBatis-plus

简单CRUD sample

使用default方法(推荐)

相关资料

关于spring-security的spring EL的表达式

前端工程 ibothub-ui