编码原则
数据库定义规范
- 蛇形命名(S命名)【全小写】
- 数据表命名:前缀_模块名_实体名
注意事项
-
组件中不适合加入成员变量,自动注入的除外
- 原因:所有的组件(controller,Service,Mapper,JPA等)他们默认都是单例的都是有Spring管理的,注:上下文产生的JavaBean不是单例。
- 示例:
@Slf4j @Api(description = "用户管理") @RequestMapping("/system/userManager") @Controller public class UserController extends BaseController<UserDO, UserService> { @Autowired private RoleService roleService; //不要这么写 private Result result;
- 分析:由于controller是单例模式,所以其成员变量是非线程安全的,可能会发生脏读写。
-
组件禁止同级别注入
- 原因:会导致在超类做泛型注入的时候引发循环引用(此结论适用于单实例Bean系统)
- 分析:基于Springboot管理的Bean是默认单例注入的(如上面的问题一般)
-
业务逻辑尽量写在Service中
- 原因:构造轻耦合系统,由service管理业务逻辑整合Dao层操作
- 分析:控制器只负责页面流转和数据传递
-
组合或派生功能没有对应后端某个具体的实体的解决办法
- 原因:有些功能可能涉及到了多个数据表的数据,或者是由其他数据表的数据派生而来,此种情况下适合自建Controller、Service、Dao处理
- 分析:一切为了低耦合,松散的编码抗压能力强debug速度快