首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java项目结构最佳实践

Java项目结构最佳实践
EN

Stack Overflow用户
提问于 2009-01-31 14:37:36
回答 5查看 15K关注 0票数 7

我正在启动一个新的Java项目,它使用Hibernate和标准的MVC体系结构。我刚刚开始布局项目结构,在这样做的时候,我开始环顾四周,看看在这方面是否有任何标准,关于控制器应该去哪里,以及通常情况下最好的布局方法。不过,我并没有找到任何指引。

所以我想知道的是

  • 是否有人知道Java项目布局的最佳实践指南?
  • 是否有人对不同类型的项目总是遵循一套特定的硬规则?
  • 人们是否倾向于通过不同的层(如演示、业务和应用程序)来分割包?
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-01-31 17:33:53

为了继续我以前的回答,我有很多网络项目。在它们中,src下的结构或多或少是相同的。包大致分为三个逻辑层。

第一个是表示层,正如您所说的,用于servlet、应用程序侦听器和帮助程序。

第二,hibernate模型/db访问层有一个层。业务逻辑的第三层。然而,有时这些层之间的边界并不清楚。如果您使用hibernate进行db访问,那么模型是由hibernate类定义的,所以我将它们放在与dao对象相同的区域中。例如,com.sample.model保存hibernate数据对象,com.sample.model.dao保存dao对象。

如果直接使用jdbc (通常与Spring一起使用),那么有时我发现更方便地将数据对象放置到业务逻辑层而不是db访问层。

(其余部分通常属于业务层)。

票数 3
EN

Stack Overflow用户

发布于 2009-01-31 20:33:44

这真的取决于你的网络框架。

例如,如果您使用Wicket,java文件和网页共存在同一个目录中,而在大多数其他框架中,页面(.jsp文件或其他什么是您的演示引擎)和代码隐藏的内容(java文件)是完全独立的。

因此,请阅读框架附带的文档(Spring、Struts、JSFe.t.c)。

另一个好建议是使用Maven原型为您的特定框架生成框架。有些web框架(如seam)甚至有自己的代码生成工具,为您的web项目奠定了基础。

对于src目录,我唯一的好建议(Yoni没有提到)是根据业务目的而不是根据类型/层来制作包。

这意味着包

  • com.mycompany.myproject.customers
  • com.mycompany.myproject.departments
  • com.mycompany.myproject.billing
  • com.mycompany.myproject.reports
  • com.mycompany.myproject.admin

而不是

  • com.mycompany.myproject.entities
  • com.mycompany.myproject.tables
  • com.mycompany.myproject.graphs
  • com.mycompany.myproject.dialogs
  • com.mycompany.myproject.servlets

第二种结构过于通用,倾向于围绕带有无关内容的大型包进行解析,而且很难维护。

票数 7
EN

Stack Overflow用户

发布于 2009-01-31 14:54:30

首先,遵循流行的ide、ala Eclipse、Netbeans等传统结构。例如,在Eclipse中,所有的东西都已经用WEB和META文件夹安排好了,所以打包和部署很容易。类源代码(通常在src下)自动复制到WEB/ Classes中。还有其他几点考虑:

  1. 如果您正在使用MVC,那么您可能不需要直接访问JSP。如果是,出于安全考虑,请将JSP源代码保存在WEB/jsp下面。
  2. 同样,将自定义标记文件保存在WEB/标记下。
  3. 将javascript文件保存在js文件夹中,css文件保存在样式文件夹中,等等。所有文件夹都应该与WEB级别相同,以模拟真正的部署。
  4. 将代码按层划分为包是很好的。显然,Hibernate daos不需要与servlet处于同一个包中。
  5. 如果您在同一个包中最终得到了太多的servlet,可以考虑将它们按照功能进行子打包,但是它们有一个共同的祖先包是很好的--它有助于提高可读性。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/498917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档