先看一下整体效果和模块
做个解释,分了三个模块:
① coupon_template_serv 优惠券模板服务,用来创建、查找优惠券
② coupon_calculation_serv 优惠计算服务,根据用户的商品和优惠券来计算订单优惠后的金额
③ coupon_customer_serv 用户拂去,用来领券、下单,也是对用户开放的接口,依赖前两个服务来完成
这里详细记录一下coupon_template_serv这个模块的搭建过程,其他两个类似
1. 新建项目
将新建后多余的文件全部删除,只剩下这三个即可
2. 新建Module
方法与步骤一相同,新建后同样将多余的删除,因为还要建子模块,所以父模块下除了xxx.iml和xxx.pom也都删掉。
在coupon-template-serv下建3个子模块分别是api(存放公共 POJO 类或者对外接口)、dao(存放数据库实体类和 Dao 层)、impl(核心业务逻辑的实现层,对外提供 REST API),如下图
从上到下,先修改最外层的项目的pom.xml
org.springframework.boot spring-boot-starter-parent 2.4.2 pom coupon-template-serv coupon-calculation-serv coupon-customer-serv 8 8 ` org.projectlombok lombok 1.18.20
再依次修改coupon-template-serv,template-api,template-dao,template-impl的依赖项,其中需要指定各自的parent和子模块
依次搭建子模块
template-api,template-dao,template-impl,代码参考
创建启动类
创建配置文件 application.yml
它位于 src/main/resources 文件夹下。需要指定端口号、数据源等等配置
启动项目
运行Application,控制台可查看启动日志
调用接口
postman中访问 localhost:端口号/url,即可通过controlle层r寻址-service层处理-dao层访问数据库简单完成整个闭环
问题:新建子模块后,pom文件的图标是xml文件标识,而不是m标识,而且目录结构是com-xxx-xxx这样一层一层的,而不是package包名一起的
解决:idea工作台左侧右键pom文件,点击Add As Maven Project,如下图
问题:删除子模块后,再新增同样名称的子模块,pom文件不生效且出现了删除线。
解决:File–Settings–Build–Maven–IgnoredFiles中将对勾取消,如下图
问题:子模块下再加子模块后,没有出现新的模块名,且目录层级乱了,把上级模块的pom也覆盖了。
解决:添加Module选择的是Spring Initializr类型时,再最后一步存储位置设置中的Content root和Module_file location要加上子模块名称,如下图(也有人说添加module时选择maven类型,但这样的话在src-java下就没有默认Application类创建了)
问题:@Table(name = “coupon_template”)中提示Cannot resolve table ‘coupon_template’
解决:Idea连接数据库,并在报错处指定数据源
问题:Nacicat连接本地数据库,出现1251错误client does not support authentication protocol requested by server
解决:参考这里
问题:SpringBoot项目启动成功,但使用postman调接口时报404
分析:找不到路径,controller未生效。
解决:将com.local.coupon.template.templateimpl改为com.local.coupon.template。SpringBoot会扫描到com.local.coupon.template包及其子包下面的内容,扫描路径也无需指定(即可以去掉@ComponentScan注解)