项目分包结构

项目分包结构到底有多重要?这个问题在每个人心中有一个答案。

一个良好的包结构可以使我们在第一时间找到某一个功能实现的代码或指定对象的位置。

包主要提供服务或容器。

对于提供服务的分包是根据分层结构来完成的,通常分为:Action,service,dao

对于提供容器的分包主要根据对象的身份,使用的场合来分的:po,vo,to,pojo

下面我们一起来总结一下,常见有哪些分包结构:

 

 

1. dao层数据访问。主要工作:访问数据库根据需要可返回po或bo。提供方法。
2. po数据库实体层。主要工作:表示出数据库中的数据。提供容器。

从概念上理解它就是数据库存在的数据,所以其所有操作都是通过sql完成的,如new是insert,gc的destroy是delete语句。

PO具体是什么结构还要看具体设计。一般来说传统上的PO是数据库的字段与属性类型一致,而外键是否扩展,如何扩展,扩展成什么PO,或者保留原值。这些都是设计问题。只要能表示数据库中的数据就称之为po
3. vo值类型层。主要工作:提供一组对象的容器(打包传参)供本应用中使用。提供容器。我们通常一个页面上的一组多个对象就会对应一个vo。
4. TO传输对象层。主要工作:提供一组对象的容器(打包参数)供传输给外部应用。提供容器。
5. serivce服务层。主要工作:完整一个业务功能。提供方法。值得一提的是service只允许vo和bo的操作,而对po的操作只能通过dao来完成。
6. action转接服务层。主要工作:为转接service方法做工作(组装页面的数据成为对象)。提供方法。action层应当转接单个service或顺序的service,若action中有逻辑意义则会打破分层架构。
7. XMLAction特殊的Action层,许多项目合并在Action中不会把它划为一层,但这里建议最好能分出来。主要工作:允许有业务逻辑,不一定会调用service,甚至直接调用dao,主要是为ajax服务。提供方法。只针对ajax服务的action
8. pojo简单javaBean层。主要工作是:非ejb的提供容器服务的都是pojo。提供容器。它就像是杂货店,如果你不想对PO,VO,TO分类都可以一股脑的丢进去,对于快速开发比较方便。
9. ejb层。主要工作:为了分布式服务提供支持。主要是提供方法也会有少量的属性。如果采用ejb技术,他可以充当了分布式的service,分布式的dao。通常它会被作为子包,如dao.ejb或to.ejb,表示某种技术支流。

### 合理的分包设计对于维护性和扩展性至关重要 在Spring Security项目中,良好的分包结构有助于提高代码可读性、便于团队协作以及后期维护。以下是推荐的一种分包最佳实践方案[^1]。 #### 一、基础模块划分 通常情况下,可以依据功能域的不同将整个应用程序划分为多个子模块: - **config**: 配置类放置于此处,比如安全配置、WebMvc配置等。 - `SecurityConfig.java`:用于定义全局的安全策略,包括认证方式、授权规则等。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { } ``` - **controller**: 控制器层负责处理HTTP请求并返回响应结果给前端页面或API客户端。 - 可进一步细分为公共控制器(`CommonController`)和服务特定控制器(如用户管理控制器`UserController`)。 - **service**: 业务逻辑层专注于具体的功能实现,不应涉及任何视图渲染操作。 - 类似地,也可以根据不同的业务领域创建相应的服务组件,例如账户服务(AccountService)、权限服务(PermissionService)等。 - **dao/repository**: 数据访问对象(DAO),或者称为仓库@Repository,主要用于与持久化存储交互的操作,如CRUD方法封装。 - 使用MyBatis Plus时,这里会包含Mapper接口文件。 #### 二、安全性相关分类 考虑到Spring Security本身是一个复杂的框架,因此有必要单独设立专门的空间来容纳与其紧密关联的部分: - **security/model**: 定义身份验证所需的数据模型实体,像UserDetails自定义实现类。 - **security/filter**: 自定义过滤器链中的各个Filter实例,它们可以在请求到达目标资源之前执行某些预处理工作。 - **security/handler**: 处理异常情况下的回调机制,如登录失败处理器(AuthenticationFailureHandler)、登出成功处理器(LogoutSuccessHandler)等。 - **security/oauth2/client/** 或者 **security/social/login/** - 如果涉及到第三方社交平台的身份验证,则应在此路径下建立对应的客户方配置和支持类。 这种布局不仅遵循了单一职责原则(SRP),而且使得开发者更容易定位到所需的组件位置,同时也方便后续添加新的特性和改进现有功能[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值