j2ee Web应用程序的标准项目/包结构

时间:2011-05-04 04:58:08

标签: java spring spring-mvc

我们正在使用Spring,Sping MVC和Hibernate启动一个新的Java EE Web应用程序。我们很可能也会使用maven。

在开始之前,我们需要为Web应用程序提供项目/包结构。

Java EE Web应用程序的标准项目/包结构是什么?

它也应该在所有应用程序服务器上运行,而不对项目结构或任何配置文件进行任何更改。

我们将使用Spring source IDE 2.6.0版(最新版本)。

有什么想法吗?

2 个答案:

答案 0 :(得分:24)

如果您使用的是maven,最好遵循标准的maven项目布局。你可以通过这样做来让maven为你生成这个结构,

mvn archetype:generate 

并从选项列表中选择spring-mvc-jpa-archetype

这将为您提供类似

的包结构
  ├── pom.xml
  └── src
      ├── main
      │   ├── java
      │   │   └── mygroup
      │   │       ├── controller
      │   │       │   ├── HomeController.java
      │   │       │   └── PersonController.java
      │   │       ├── dao
      │   │       │   └── PersonDao.java
      │   │       └── model
      │   │           └── Person.java
      │   ├── resources
      │   │   ├── db.properties
      │   │   ├── log4j.xml
      │   │   └── META-INF
      │   │       └── persistence.xml
      │   └── webapp
      │       ├── index.html
      │       ├── META-INF
      │       │   ├── context.xml
      │       │   └── MANIFEST.MF
      │       ├── resources
      │       │   └── css
      │       │       └── screen.css
      │       └── WEB-INF
      │           ├── spring
      │           │   ├── app
      │           │   │   ├── controllers.xml
      │           │   │   └── servlet-context.xml
      │           │   ├── db.xml
      │           │   └── root-context.xml
      │           ├── views
      │           │   ├── edit.jsp
      │           │   ├── home.jsp
      │           │   └── list.jsp
      │           └── web.xml
      └── test
          ├── java
          │   └── mygroup
          │       ├── controller
          │       │   ├── DataInitializer.java
          │       │   ├── HomeControllerTest.java
          │       │   └── PersonControllerTest.java
          │       └── dao
          │           └── PersonDaoTest.java
          └── resources
              ├── db.properties
              ├── log4j.xml
              ├── test-context.xml
              └── test-db.xml

答案 1 :(得分:19)

MVCSR(模型,视图,控制器,服务,存储库)Web应用程序的通用,更完整的Java包结构如下所示:

java
└── com
    └── youdomain
        |
        ├── base   // broadly used app-wide base and abstract classes)
        |
        ├── core   // broadly, scattered use helpers, utilities, app health/stats
        |          // tracking, logging, etc
        |
        ├── controller // Fields Http/CGI requests and drives/initiates request 
        |          // comprehension, validation, security checks, requesting 
        |          // operations by the Service module and invoking the View to 
        |          // generate a response.
        |
        ├── data   // This is the lower level data infrastructure, with several
        |          //packages under it for mappers, schema tables/enums, helpers,
        |          // record location, id management, etc
        |
        ├── domain // app-wide exposed classes, managers, and interfaces to
        |          // each persisted (usually DB) domain 'object'. Each
        |          // object often correlates to one table row in you DB.
        |          // Domain objects are mostly considered data, but have some fundamental
        |          // record construction, validation, elaboration, and ancillary information
        |          // functionality which is opaque to the rest of the application. 
        |          // For example: Customer, Account, Purchase, Inventory, 
        |          // Product, Sale, Return, SpecialOffer, FeedbackComment...
        |
        ├── repository // more complicated persisted objects, often structured
        |       // to address certain efficiency or traversal needs, often each
        |       // repository is underpinned by several records, tables, 
        |       // and even cross-DB structures. Example: 
        |       //  -- OrderHistory, 
        |       //  -- ProductsGlobalSearchIndex, 
        |       //  -- CustomerSpecificProductMarketingSuggestionCorrelates
        |
        ├── service // The smarts of the whole application, performs macro, holoistic 
        |       //  operations involving multiple DB tables and operations. Such as:
        |       //  -- account.UserAccountLifecycle, 
        |       //  -- order.CustomerOrder, 
        |       //  -- order.CustomerOrderShipment
        |
        └── view // Intefaces with your jsp, freemarker, tapestry etc.