web-dev-qa-db-ja.com

Springのパッケージ構造を定義する方法REST MVCアプリケーション?

私は春休みベースのwsを書くのは初めてです。以下の構造のプロジェクトを作成しました。

Java Resources
  - src/test/Java
  - src/main/Java
     - com/sample/rest
       - controller  (for the request mappings)
       - domain (for POJOs)
       - service (for business logic)
       - utility (for utility methods)
       - dao (for database calls)

ドメインパッケージにPOJOを追加し始めましたが、問題はアプリケーションに2種類のPOJOがあることです。アプリケーションテーブルの構造に対応する1つのタイプ。サードパーティの結果構造に対応する別のタイプ。

ドメインパッケージでこれらの2つのPOJOタイプをどのように区別できるかわかりません。

25
user811433

ほとんどのプロジェクトは、あなたが説明したように見えます。ドメインパッケージの内部には、ユーザー関連のすべてのpojoを含むユーザーパッケージがあります。 daoでは、サービスも同じサブパッケージに存在します。

しかし、パッケージを分割することが最善であると私が思う組織は次のようになります。

-com.company.project
    - users
         UserService
         UserDAO
         User
         Role
    - cart
         Cart
         CartService
         CartDAO
         ShopItem

そしてそうなる。私はSpring Sourceの人からの話でそれを初めて見ました。動画を探してみます。

とにかく、私はこの戦略のプロジェクトに数か月間取り組んでいますが、今までのところ、従来の方法よりも整理されているようです。

ユーザーなどのパッケージが混雑しすぎた場合は、いつでもサブパッケージを作成して、その中に編成できます。しかし、ほとんどのパッケージでは、1つまたは2つのドメインクラス、1つのDAOと1つのサービスになります。したがって、追加のパッケージは必要ありません。

更新:これはビデオだと思います: http://www.youtube.com/watch?v=tEm0USdF-7

41
digao_mb

モジュール/ライブラリの観点から考えてみましょう。

コアビジネスロジックライブラリをアプリケーションの外部で分離し、テストライブラリで分離し、残りのライブラリをコアビジネスロジック内の機能を利用してコアビジネスロジックライブラリを受け入れるのは良いことです。

Module : MyAppLogic.jar
  -> com.company.user
       -> class UserBean : Pojo
       -> class UserDao : insert( String userName , String userEmail ) ;
       -> class UserService : insert( UserBean userBean ) ;
  -> com.company.cart
       -> class CartBean : Pojo
       -> class CartDao : insert( int cartUserId , int cartItemId ) ;
       -> class CartService : insert( CartBean cartBean ) ;

Module : MyAppRest.jar
  -> com.company.rest.domain
       -> class User : @XmlRootElement
       -> class Cart : @XmlRootElement
  -> com.company.rest.model
       -> interface UserServiceIntf : insert( User user ) ;
       -> class UserServiceImpl : private UserService userService ;
       -> interface CartServiceIntf : insert( Cart cart ) ;
       -> class CartServiceImpl : private CartService cartService ;
  -> com.company.rest.service
       -> class UserRestService : @Path("/users")
       -> class CartRestService : @Path("/carts")
8
Benny Iskandar