以下这些都只是从工作中,思考出来的,只是在下自己的拙见。一个好的包设计, 可以让项目更加清晰具体。

com.company.dao.pojo

这里存放的是与数据库对应的表的POJO

com.company.dao

这里存放最原子的数据库操作的代码,每一个类的操作,都有一张与之对应的表。它只向 com.company.dao.service 层提供服务。

com.company.dao.service

这里存放的是对 com.company.dao 的管理服层,因为有些关系不是只是操作一张表的, 可能要对两张或以上的表进行事务操作。这时, 就应该把这些操作放在这里。

com.company.controller

这里存放的是所有 controller 的类,即Restful API层。前端可以直接访问的方法就放在这里。

com.company.task

这里存放的是所有与task相关的类。比如用了spring task的服务的类都放在这里。(如果有的话)

com.company.rabbitmq.queue

这里存放的是所有与消息队列进队相关的类。

com.company.rabbitmq.listener

这里存放的是所有与消息队列出队相关的监听器的类

com.company.utils

这里存放的是所有与工具类相关的类

com.company.pojo

这里存放的是除了DB的映射关系的POJO以外的POJO

com.company.constants

这里存放的是与常量有关的类

com.company.redis

这里存放的是所有与redis操作相关的类

com.company.filter

这里存放所有filter类

com.company.inteceptor

这里存放所有interceptor类

com.company.service

为其他类提供的服务类,因为有些时候,使用Utils静态工具类,无法注入Spring的依赖,这时可以使用@service来注解某个服务类,为其他类提供服务,又可以使用Spring的DI优点。 因为Spring默认下是对象是单例的。所以不必担心对象实例化过多的问题。