### Lombok插件安装 * 项目使用[Lombok](https://projectlombok.org/)插件简化开发,请自行在编译器中安装,不安装会报错但不影响运行,常用注解说明: * `@Data`:自动生成get、set等方法 * `@Slf4j`:日志打印可直接使用`log.info()`等 ### 配置文件加密 * 配置文件可使用Jasypt加密,可到`cn.exrick.xboot.common`包中找到 JasyptUtil 工具类生成加解密结果,当检测到格式为`ENC(xxx)`时会自动解密,当然也可直接明文(生产环境中可通过环境变量、命令行等形式进行设置) ~~~ # 配置文件加密key 生产环境中可通过环境变量、命令行等形式进行设置 jasypt: encryptor: password: xboot spring: # 数据源 datasource: # Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果) password: ENC(F4B0s6u9xcDw3V+P0qC4CA==) ~~~ ### 启用Elasticsearch与配置日志记录位置 * 启用Elasticsearch,操作日志使用ES或数据库记录配置 ~~~ spring: # Elasticsearch data: elasticsearch: # 暂未使用ES 关闭其持久化存储 repositories: enabled: true xboot: # 日志记录方式 true使用Elasticsearch记录(需启动并配置ES) false记录至数据库中(默认) logRecord: es: false ~~~ ### 操作日志注解使用 * 日志注解使用`@SystemLog(description="操作日志名称", type=日志类型)` * 日志类型type默认为OPERATION操作日志 当然你可以自定义 ### 接口相关 * 为方便前台配置代理,所有接口建议以统一路径例如“/xboot”开头 * 登录成功后前台请在返回的`result`字段中保存token(因登录接口已需要图片验证码验证,需带上验证码参数,详见文档[验证码过滤器使用](https://www.kancloud.cn/exrick/xboot/1136968)或[Swagger接口文档统一认证](https://www.kancloud.cn/exrick/xboot/1027473)部分) ![](https://i.loli.net/2019/02/04/5c581d77f2cfc.png) * 之后的请求中请在header或参数中添加该token即可 ![](https://i.loli.net/2019/02/04/5c581d78061b4.png) ### 无状态风格Token令牌交互相关配置 ~~~ xboot: token: # 设置为true后,token将存入redis,并具有单点登录功能 默认false使用JWT交互 redis: true # 是否开启单设备登陆 仅当token交互方式为redis时生效(默认60分钟内无请求自动失效,下方可配置) sdl: true # token中存储用户权限数据 设为true开启后可避免每次请求再获取用户权限,但有可能导致编辑权限菜单后无法读取到最新权限数据(需用户重新登录) storePerms: true # token过期时间(分钟) tokenExpireTime: 60 # 用户选择保存登录状态对应token过期时间(天) saveLoginTime: 7 # 限制用户登陆错误次数(次) loginTimeLimit: 10 # 错误超过次数后多少分钟后才能继续登录(分钟) loginAfterTime: 10 ~~~ ### 无需认证接口配置 * 忽略鉴权url配置(不需要登录认证 开放的接口 支持通配符) ~~~ # 忽略鉴权url ignored: urls: - /xboot/user/regist ~~~ ### 限流配置 * 分布式限流(基于Redis令牌桶算法) * 全局限流 ~~~ xboot: # 全局限流 ratelimit: enable: true # 每1秒内 timeout: 1000 # 总限制100个请求 limit: 100 # IP限流 iplimit: enable: true # 每1秒内 timeout: 1000 # 每个ip限制15个请求 limit: 15 ~~~ * 指定方法限流注解 ~~~ @RateLimiter(limit = 1, timeout = 5000) ~~~ * 支持多维度IP、uid等限流 详见代码 ### 同步锁使用 * 分布式同步锁(基于Redis) ~~~ @Autowired private RedisDistributedLockTemplate lockTemplate; lockTemplate.execute("订单流水号", 5000, new Callback() { @Override public Object onGetLock() throws InterruptedException { //TODO 获得锁后要做的事 log.info("生成订单流水号"); return null; } @Override public Object onTimeout() throws InterruptedException { //TODO 获得锁超时后要做的事 return null; } }); ~~~ ### 后端代码生成 * 后端代码生成方法在`cn.exrick.xboot.generator`包中的`XbootGenerator.java`或`XbootMPGenerator.java`工具类,支持JPA或Mybatis-Plus代码生成,修改好生成类配置后运行主函数main方法即可生成三层相关代码,别忘了在实体类中添加相关字段,运行项目后将自动生成数据库表,详见代码生成文档 ### Spring缓存注解 ~~~ ```java @CacheConfig(cacheNames = "user") public interface UserService extends XbootBaseService<User,String> { @Cacheable(key = "#username") User findByUsername(String username); } ``` ~~~ * 删除刷新注解`@CacheEvict(key = "#u.username")`手动删除刷新缓存时注意key为:`user::username` ### Quartz定时任务使用 * 在`cn.exrick.xboot.quartz.jobs`包下写好好你的定时任务类,参考代码中已有2个定时任务Job示例 * 启动应用在后台页面“定时任务”菜单添加配置你写的的定时任务类保存成功后将开始执行 ### Spring Security官方推荐权限管理:`@PreAuthorize("hasRole('ADMIN')")` ### Spring自带定时:`@Scheduled(cron="cron表达式")` ### Spring异步:`@Async`