RuoYI

Start

  • 注意前后端是否分离,启动后端项目只需要配置mysql数据库即可
  • 注意node版本,不能过高或者过低

 

分页插件pagehelper中的startpage需要紧挨着mybatis查询方法,且只对一条有效

 

导出操作:在实体类上添加@excel注解,利用mybatis查询出相应数据,最后利用封装好的导出方法

  导入操作:在实体类上添加@excel注解,利用封装好的工具类读取文件字节流,最后将读取到的数据写入数据库;

  导入模板:利用相应实体类生成;

 

spring默认的事务处理规则是遇到运行时异常或者error才会进行回滚,检查时异常不会进行回滚操作(事务这一部分的细节没怎么看懂)

 

全局异常处理:@ControllerAdvice,切面概念;业务层不再需要去捕获异常,而是直接抛异常,所有异常都会在一个地方进行统一处理

 

权限控制:@PreAuthorize注解

  本质:通过向hasPermi函数传递字符串进行相应逻辑判断,最后返回Boolean值

    a. 将当前登录用户的所有菜单权限查询出来(sys_menu表中的perms字段)

    b. 将接口传递的字符串参数与上述查询的菜单权限列表进行比对,看是否包含于该列表中

  角色是权限的集合,此处的权限字符表示角色控制;此处的菜单权限才是重中之重!(每一个菜单在sys_menu表中对应一条记录,每一条记录中的perms字段即是用于@PreAuthorize注解校验)

  所以也就是说,前端在创建新的菜单时,其实这个权限字符是必须的,且最好与后端接口约定好,但这也是前后端沟通的麻烦之处!

 

@Log注解

  自定义注解的本质还是AOP:定义注解、使用注解、发现注解

  切面如何获取到该注解位置???

  AOP原理

 

多线程异步任务

  本质:AsyncFactory类负责构建TimerTask任务,然后交由AsyncManager类通过线程池进行执行

  https://www.cnblogs.com/ReturnOfTheKing/p/17989174

 

代码生成

本质是模板的渲染,相关模板路径为

BDCloud-generator/src/main/resources/vm/java/controller.java.vm

 

定时任务

注:

1、调用方法表达式:bean名称+方法名

 

2、任务的状态控制:

调度器内部的resumJob、pauseJob方法实现

 

SpringBoot集成Quartz

Demo示例常见的几种定时方法

 

字典管理

将一些枚举值放入字典中,便于动态管理

sys_dict_type和sys_dict_data通过字典标签dict_type进行关联

 

参考文章

【1】@PreAuthorize注解自定义权限校验

【2】常用的开源Java项目快速开发脚手架

posted @   先娶国王后取经  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示