个人笔记: 努力奋斗
前言
项目开发包结果混乱,严重影响个人代码维护;项目结构混乱,天天叼一遍架构开发人员,不屌意难平!话不多搞个通用项目结构以备后来使用
1.项目包结构推荐
通用包层结构:
com.example.project: 顶级包,根据实际项目来命名。
com.example.project.config: 用于存放配置相关的类,比如数据库配置、缓存配置、日志配置等。
com.example.project.controller: 存放控制器类,处理HTTP请求,负责接收和响应请求。
com.example.project.service: 存放服务层接口和实现类,负责处理业务逻辑,可进一步细分为com.example.project.service.impl用于存放实现类。
com.example.project.dao: 存放数据访问层接口和实现类,负责与数据库进行交互。
com.example.project.model: 存放领域模型类,如实体类、DTO(数据传输对象)等。
com.example.project.exception: 存放自定义异常类,用于处理业务异常情况。
com.example.project.util: 存放通用工具类,例如日期处理、加密解密、文件操作等。
com.example.project.constant: 存放常量类,如错误码、配置项等。
com.example.project.security: 存放安全相关的类,如认证、授权等。
com.example.project.handler: 存放全局异常处理器、请求拦截器等。
com.example.project.aspect: 存放切面类,用于实现日志、权限等方面的切面功能。
com.example.project.task: 存放定时任务相关的类。
com.example.project.listener: 存放事件监听器相关的类。
com.example.project.test: 存放单元测试相关的类。
2.阿里巴巴包结构推荐
阿里巴巴Java开发手册提供了一套推荐的包结构设计,以下是阿里推荐的包结构示例:
com.example.project: 顶级包,根据实际项目来命名。
com.example.project.module: 模块包,按照模块划分,可以根据业务功能进行命名,如user、order等。
api: 存放接口类,如UserService、OrderService等。
dto: 存放数据传输对象,用于接口参数的封装。
entity: 存放实体类,对应数据库的表结构。
repository: 存放数据访问层接口,如UserRepository、OrderRepository等。
service: 存放服务层接口和实现类,如UserService、OrderService等。
controller: 存放控制器类,处理HTTP请求,负责接收和响应请求。
com.example.project.config: 存放配置相关的类。
DatabaseConfig: 数据库配置类。
CacheConfig: 缓存配置类。
SecurityConfig: 安全配置类。
com.example.project.exception: 存放自定义异常类。
BusinessException: 业务异常类。
GlobalExceptionHandler: 全局异常处理器。
com.example.project.util: 存放通用工具类。
StringUtils: 字符串处理工具类。
DateUtils: 日期处理工具类。
EncryptionUtils: 加密解密工具类。
com.example.project.constant: 存放常量类。
ErrorCode: 错误码常量类。
ConfigKey: 配置项常量类。
com.example.project.aspect: 存放切面类。
LoggingAspect: 日志切面类。
AuthorizationAspect: 授权切面类。
com.example.project.task: 存放定时任务相关的类。
OrderTask: 订单定时任务。
com.example.project.listener: 存放事件监听器相关的类。
UserEventListener: 用户事件监听器。
com.example.project.test: 存放单元测试相关的类。
UserControllerTest: 用户控制器的单元测试类。
OrderServiceTest: 订单服务的单元测试类。
XX项目结构示例
XX项目的后端系统,通用包层结构:
com.example.ecommerce: 顶级包,根据实际项目来命名。
com.example.ecommerce.config: 存放配置相关的类。
DatabaseConfig: 数据库配置类。
CacheConfig: 缓存配置类。
SecurityConfig: 安全配置类。
com.example.ecommerce.controller: 存放控制器类。
UserController: 用户相关的控制器类。
ProductController: 商品相关的控制器类。
OrderController: 订单相关的控制器类。
com.example.ecommerce.service: 存放服务层接口和实现类。
UserService: 用户服务接口。
UserServiceImpl: 用户服务实现类。
ProductService: 商品服务接口。
ProductServiceImpl: 商品服务实现类。
OrderService: 订单服务接口。
OrderServiceImpl: 订单服务实现类。
com.example.ecommerce.dao: 存放数据访问层接口和实现类。
UserDao: 用户数据访问接口。
UserDaoImpl: 用户数据访问实现类。
ProductDao: 商品数据访问接口。
ProductDaoImpl: 商品数据访问实现类。
OrderDao: 订单数据访问接口。
OrderDaoImpl: 订单数据访问实现类。
com.example.ecommerce.model: 存放领域模型类。
User: 用户实体类。
Product: 商品实体类。
Order: 订单实体类。
com.example.ecommerce.exception: 存放自定义异常类。
UserNotFoundException: 用户未找到异常类。
ProductNotFoundException: 商品未找到异常类。
OrderNotFoundException: 订单未找到异常类。
InvalidRequestException: 无效请求异常类。
com.example.ecommerce.util: 存放通用工具类。
DateUtils: 日期处理工具类。
EncryptionUtils: 加密解密工具类。
FileUtils: 文件操作工具类。
com.example.ecommerce.constant: 存放常量类。
ErrorCode: 错误码常量类。
ConfigKey: 配置项常量类。
com.example.ecommerce.security: 存放安全相关的类。
AuthenticationManager: 认证管理类。
AuthorizationManager: 授权管理类。
JwtTokenProvider: JWT Token提供者类。
com.example.ecommerce.handler: 存放全局异常处理器、请求拦截器等。
GlobalExceptionHandler: 全局异常处理器。
RequestInterceptor: 请求拦截器。
com.example.ecommerce.aspect: 存放切面类。
LoggingAspect: 日志切面类。
AuthorizationAspect: 授权切面类。
com.example.ecommerce.task: 存放定时任务相关的类。
OrderCleanupTask: 订单清理定时任务。
com.example.ecommerce.listener: 存放事件监听器相关的类。
UserRegistrationListener: 用户注册事件监听器。
com.example.ecommerce.test: 存放单元测试相关的类。
UserControllerTest: 用户控制器的单元测试类。
ProductServiceTest: 商品服务的单元测试类。
OrderDaoTest: 订单数据访问层的单元测试类。
总结
提示:这里对文章进行总结:
项目明确结构,具体业务具体再调整即可