首先我们采用的前后端技术栈
将静态页面部署到nginx
后台项目架构采用父子聚合工程
数据库建模工具使用pdman,移除物理外键的原因
- 性能
- 热更新
- 降低耦合度
- 方便分库分表
dao层使用MyBatis逆向工程和HiKariCP整合
service层事务的传播机制
- REQUIRED : 使用当前事务,如果当前没有事务,则自己新建一个事务,子方法是必须要运行在一个事务中的
- SUPPORTS : 如果当前有事务,则使用事务,如果当前没有事务,则不使用事务
- MANDATORY : 强制必须存在一个事务,如果不存在就抛异常
- REQUIRS_NEW :如果当前有事务,则挂起事务,并且创建一个新的事务给自己用,如果当前没有事务则同REQUIRED
- NON_SUPPORTED : 如果当前有事务,则挂起事务,自己不使用事务
- NEVER : 如果当前有事务,则抛出异常
- NESETED : 如果当前有事务,则开启子事务(嵌套事务),嵌套事务是独立提交或者回滚,如果当前没有事务则同REQUIRED
- 如果主事务提交,则会携带子事务一块提交或者回滚。相反子事务异常,则父事务可以回滚或者不回滚
为什么不用@EnableTransationManagment注解直接使用@Transation也可以生效?
因为在使用springboot的自动配置时,已经将事务自动装配了
controller层使用restful风格
实现单体电商核心功能
- 用户注册
- 用户名是否存在
- 创建用户
- 用户登录和退出(session,cookie)
- 首页功能
- 轮播图列表展示(放入redis中,定时更新或者后台管理系统更新)
- 三级分类(mybatis 嵌套查询)
- 推荐分类下最新的6个商品
- 商品详情功能
- 商品详情
- 商品评价(pageHelper,信息脱敏)
- 商品搜索
- 购物车(crud,cookie,redis,前后端要一致是否登录)
- 生成订单(order,order_item,order_status)
- 微信,支付宝支付(流程图,内网穿透netapp,定时任务关闭未支付订单)
- 云端部署
- JDK,tomcat,MariaDB的安装