Skip to content

Latest commit

 

History

History
111 lines (85 loc) · 6.7 KB

README.md

File metadata and controls

111 lines (85 loc) · 6.7 KB

基于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