项目基础结构(项目地址 :https://gitee.com/luocaca/boot-models.git)

--

开局一张图。内容全靠编,bug全靠踩...
1.最原始spring boot 项目结构。如下

现需要将commom entity mapper service 抽出来,成立单独 的model
抽出model 格式如下 (删除api内 commom entity mapper service包 )
新建 commom entity mapper service 4大model

api 依赖 4大model

拆分后第一个问题

来来来。运行一下,看下会爆什么错。别他坑一波。肯定要看清楚(找不到类)
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'otherservice.PersonService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

-解决方法
在 model-service.src.main.java 下面新建 me.luocaca.model.service包,然后把PersonService拖过去


修改后,重新运行 ,ok

访问一下

数据库长这样,需要自己建一张

2.接下来介绍一下打包流程,以及将
打包结构要从最底层开始打包
也就是依赖关系反过来一个一个model进行打包
本项目依赖关系梳理一下(models为最上层 打包方式为 pom )
由于本项目由2个可独立打包运行的web项目(api +web)
+
多个依赖(service mapper entity commom)项目组成
让我们简单粗暴的看一下依赖关系(一图堪比千言万语)

看清楚没有
依赖关系
api —> service —> mapper(dao) —> entity —> commom( 最底层,不依赖上层 )
打包流程
commom —>entity —> mapper(dao) —> service —> api
先简单说明一下 什么是打包,再来说为什么要反着打包,

install之后看看效果(找到maven仓库,看看文件结构)

可以看出,maven 打包的时候,会将第三方model 全部导入到jar包,而第三方的库都是网上下载到repository ,然后从仓库
中找到 .jar .pom .war 各种项目包,拷贝到 自己项目的 exec.jar 包里面,
→_→ 让我们看一下对比一下.jar 与 exec.jar的结构图


看明白没。哈哈。exec.jar里面很多jar包。

这里因为我已经打包过 commom entity mapper service 4个库,并且install 到maven 仓库,api才能被打包成功
现在可以解释什么叫方向打包。从最底层,打包完整之后。再打包上层 model
打包流程
commom —>entity —> mapper(dao) —> service —> api
假如 service 没有 package + install 直接 pai 进行 package +install ,会出现 找不到 model-service.0.0.1-SNAPSHOT.jar
因为在我们新建一个model 的时候。maven里面是没有我们 service的包的。只有打包 并 install 之后,model-service.0.0.1-SNAPSHOT.jar 包


其他 mapper entity commom 同理。。。。。。。。。自己体会。先这样。。。。。不说了。下次说说jsp ,很多细节bug。要点出。
大神勿喷。
项目地址:https://gitee.com/luocaca/boot-models.git
应为篇幅原因,这里主要讲api项目创建到打包发布过程,等下会在独立一批文章,记录web项目引入jsp与打包发布流程的采坑过程。
网友评论