如题
现如今随着技术的不断发展,一个java项目的构建也变的无比的简单。那么一个完整的项目涉及到不同层,不同逻辑,如何有效的区分,不至于让我们在编写/阅读代码时跳来跳去跟无头苍蝇一样乱窜呢?以下是我个人的一些拙劣看法,有不对之处或更好的还请各位小伙伴不吝赐教,谢谢!
正文
以一个多模块的项目(类似管理系统)作为例子:
|————project项目名
|————xxx-api
|————xxx-business
|————xxx-common
|————xxx-system
|————xxx-generator
...
最外层的模块分级可以大致如上图这样(xxx作为项目名标识):
① xxx-api:这个模块专门用来写和对外接口相关的类。
② xxx-business:这个模块专门用于描述**系统对外的**业务层逻辑,比如什么增删改查之类的,都在这里。
③ xxx-common:这个模块写**整个项目通用的、公共的**各种实体类:如引用/自定义的的第三方工具类utils、根据业务自定义的结果封装类、错误类、枚举类、注解类等等很多。。。
④ xxx-system:这个模块不用多说,所写的都是针对本身我们项目系统层面的各种逻辑:比如各种切面、各种converter转换、用户、角色、菜单等等的定义实现以及工具类啥的。。。
⑤ xxx-generator:这个不用多说,自然是借助了mybatis的代码生成器咯。
...
经过以上模块分级后,项目启动入口一般在xxx-api这个模块,其他所有模块都跟它关联。
再说一下dao、entity、service、controller、mapper层这些
Dao层:
DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。具体到项目里新建一个dao文件夹,在其下面新建一堆与数据表映射的实体类。
entity层:
entity就是属性类,通常定义在model层里面,相当于MVC的M层,属于数据模型层。
一般得实体类对应一个数据表,其中的属性定义数据表中的字段,实体类的字段数量 >= 数据库表中需要操作的字段数量。(有时候entity和dao一样)
Mapper层:
相当于说是Dao层。它在数据层面直接对数据库进行操作,写入的是sql语句,提供接口给Service层。(当然有了mybatis后,针对基本增删改,mapper层往往只需要写一个接口即可,偶尔需要声明一个查询类什么的。)
Service层(包含Service + Serviceimpl):
Service层我们常叫它服务层,大致就是通过对Dao层数据的各种封装利用,组成一个个服务,跟controller层交互。用来作为controller层与dao层之间沟通的桥梁。这里就涉及到了数据库的事务控制(增删改查)。至于Service接口里的方法全部声明,在Serviceimpl部分具体实现。但是注意,这里不要将Service接口 跟 Mapper层接口混淆。
Controller层:
Controller层就是做一个请求转发,它接收来自客户端/外部页面传来的参数,传给Service层去做处理,然后收到Service层返回来的结果,再传给页面。
简单理解就是:Controller——>Service——>Dao(Mapper)。
额外补充一点,Config层往往写一些配置,针对以上层的都有。
最后总结整体结构
结合正文的目录结构给大家假设一下大致总体结构哈(部分单模块项目/简单项目不一定要与此相同,各抒己见,求同存异就好了):
|————project项目名
|————xxx-api
|——src
|——main
|——java
|——com.xxx
|————config
|————controller
|————xxxApiApplication
|——resource
|——(一些mapper.xml配置文件,以及yml配置文件)
|——target
|——pom.xml(分)
|————xxx-business
|——src
|——main
|——java
|——com.xxx
|————converter
|————mapper
|————service
|————...略
|——resource
|—— 略
|——target
|——pom.xml(分)
|————xxx-common
|——src
|——main
|——java
|——com.xxx
|————response
|————errors
|————errors
|————model
|————utils
|————...略
|——resource
|—— 略
|——target
|——pom.xml(分)
|————xxx-system
|——src
|——main
|——java
|——com.xxx
|————aspect(切面)
|————converter
|————mapper
|————service
|————...略
|——resource
|—— 略
|——target
|——pom.xml(分)
|————xxx-generator
|——src
|——main
|——java
|——com.xxx
|————mybatis.generator
|——META-INF
略
|——target
|——pom.xml(分)
...
|——pom.xml(总)
人永远无法赚到自己认知之外的金钱,社会有无数方法收回你所不该拥有的。所以,请去学习~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/157275.html