先看一下整体效果和模块

做个解释,分了三个模块:
① 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注解)
