高效开发-后端项目包结构推荐


个人笔记: 努力奋斗


前言

项目开发包结果混乱,严重影响个人代码维护;项目结构混乱,天天叼一遍架构开发人员,不屌意难平!话不多搞个通用项目结构以备后来使用


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: 订单数据访问层的单元测试类。

总结

提示:这里对文章进行总结:

项目明确结构,具体业务具体再调整即可

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值