Spring和MVC正确的项目结构

Posted

技术标签:

【中文标题】Spring和MVC正确的项目结构【英文标题】:Spring and MVC proper project structure 【发布时间】:2012-09-06 01:11:42 【问题描述】:

我正在使用 Maven 开发 Swing 独立应用程序。我尝试遵循 MVC 模式。我对我的项目结构感到困惑。我有这样的事情:

/src/main/java/myName/appName             
/src/main/java/myName/appName/model       
/src/main/java/myName/appName/view
/src/main/java/myName/appName/controller

现在我想合并 Spring 框架,是什么让我将 DAO 和 BO 接口和实现放在某个地方。我已经阅读了这篇文章link,建议的项目结构不适合我。我想到的是添加以下内容:

/src/main/java/myName/appName/dao
/src/main/java/myName/appName/bo

dao 目录的内容如下所示(模型目录中有 Client 和 Customer 类):

/src/main/java/myName/appName/dao/ClientDAO.java
/src/main/java/myName/appName/dao/ClientDAOImpl.java
/src/main/java/myName/appName/dao/CustomerDAO.java
/src/main/java/myName/appName/dao/CustomerDAOImpl.java

这很糟糕吗?我想学习好的做法。

【问题讨论】:

您引用的文章中目录结构的哪一部分不适合您? @Adrian Shum 那么你会将 DAO 和 BO 类放在哪里? @Costi Ciudatu 为什么这是不好的做法?改用什么? 而不是 DaoImpl ? mysqlDao、JpaDao 或(最坏的情况)DefaultDao 或 StandardDao。 *Impl 表示只能有一个实现,否则第二个将被命名为 *Impl2。如果只能有一个实现,则不需要接口...... Sprign 不需要每个 DAO 的接口?在我读过的每个 Spring 教程中,所有 DAO 都有自己的接口 【参考方案1】:

分类

/src/main/java/myName/appName/model        
/src/main/java/myName/appName/view 
/src/main/java/myName/appName/controller 

以后会给你带来麻烦。 您提供的链接中提到的包结构应该适合您。每个模块/实体都应该有一个包。例如/src/main/java/myName/appName/customer,你应该把所有与customer相关的modelviewcontrollerdao类放在这个包中.

【讨论】:

我认为将视图与模型分开会很好。如果我的视图类与任何实体都不相关怎么办?我应该把它放在哪里?还有,是否需要为model、dao和bo创建单独的文件夹,然后在dao和bo中单独的文件夹来实现?我想要这样的东西:/src/main/java/myName/appName/customer/Customer.java/src/main/java/myName/appName/customer/CustomerDAO.java/src/main/java/myName/appName/customer/CustomerDAOImpl.java/src/main/java/myName/appName/customer/CustomerBO.java 和 BO 实现。 通用类(如果有的话)可以放在像../appName/common/这样的文件夹中。对于实体../customer/bo 和../customer/dao` 可以添加到其他类,它可以直接在../customer 中。将您的 dao 实现命名为 MySqlDao<SpecificDB>Dao 能否详细说明为什么会出现问题?【参考方案2】:

您可以遵循您在问题中定义的两个项目结构中的任何一个,但这应该取决于您的应用程序大小。

如果您的应用程序中有大量模块,则可以遵循@basijames 描述的项目结构。因为这将有助于管理代码和在团队中分配工作。

如果你没有很多模块,那么我更喜欢你应该使用类似下面的项目结构。

/src/main/java/myName/appName/controller   
/src/main/java/myName/appName/model
/src/main/java/myName/appName/service
/src/main/java/myName/appName/dao
/src/main/java/myName/appName/bo

但根据我的说法,在创建 maven 项目时,您应该跳过选择架构类型。

希望这对您有所帮助。干杯。

【讨论】:

以上是关于Spring和MVC正确的项目结构的主要内容,如果未能解决你的问题,请参考以下文章

使用 Maven 的具有多个子项目的 Spring MVC 项目的包结构

Spring MVC体系结构和处理请求控制器

Spring Web源码之MVC主体结构

Spring Web源码之MVC主体结构

Spring Web源码之MVC主体结构

将 CSS 和图像链接到 Spring MVC maven 项目