JavaWeb框架搭建之旅(二)----项目目录结构

创建好基础项目之后,我们就可以来准备目录结构了,我根据我工作中的经验,把目录结构分为下图所示:目录结构
这边do文件夹不知道为什么识别不出来,后面我换成了tableentity文件夹。
下面我按顺序讲解下每一个目录的作用:

java目录下
  • api:这个目录可以放本项目调用其他服务的api接口,比如FeignClient、mq这些。
  • config:这里放整个项目的配置类或者配置映射类,如果项目配置很多,可以再细分。
  • constant:这里放整个项目的常量类。按照开发规范,代码里不应该出现突如其来的魔法值,不便于阅读。另一个作用是,可以把常量分门别类做个汇总,一定程度上也可以防止重复。例如:业务报错话术、一些字符串常量、一些状态码code等等。
    • enum:枚举。例如:报错信息的code和message、“状态”之类的业务字段等等。只要是值是有限个的,其实都可以定义为枚举。
  • controller:MVC中的C,控制层。
    • openapi:有时候项目需要提供一些接口给上游系统调用,又不想把所有的接口都提供出去,或者是对于上下游交互的接口需要做一些特殊的处理逻辑,比如参数校验等,此时可以在这个openapi目录下再写一层controller,如果接口逻辑一模一样,可以直接调用父层级目录下的对应controller接口即可。
  • entity:专门放各种实体类的目录。这一层分的比较详细,大家可以参考删减bo、dto、vo之类的,毕竟简单的项目如果要定义这么多实体其实还是挺麻烦的。
    • annotation:自定义注解。
    • bo:业务对象。具有一定的业务含义,实体类中可以含有一定的业务逻辑。
    • do:数据对象。对应的是数据库表实体。
    • dto:数据传输对象。纯用来作为数据传输,没有业务含义。
    • req:请求对象。如果是openapi,建议也单独用一个req对象,命名可以以OpenApiReq。
    • resp:响应对象。
    • vo:视图对象。用来作为页面展示的数据渲染,里面可以包含一些UI界面所需格式的转换。比如时间、小数等。
  • job:项目中的定时任务代码可以放在这里。
  • repository:仓储层。mybatis的mapper.java文件放在这里,也可以放一些操作redis、mongodb的。
  • service:项目中的业务逻辑都写在这里。
    • impl:实现类。通过接口的实现,可以方便做扩展。
  • util:工具类。
resources目录下
  • mapper:mybatis的mapper.xml文件。
  • static:项目静态资源。
    • css:css文件。
    • js:js文件。
  • template:模板文件。比如thymeleaf等模板文件。

所有的配置文件就放在resources目录下即可。

注意:项目目录结构并非一成不变,也不一定要分的很仔细,如果自己公司的项目代码量很少,那么简洁的目录结构,能够使得项目代码清晰明了即可,没必要过度细化。把握好一个度,才是最适合的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值