web-dev-qa-db-fra.com

Comment définir la structure de l'emballage pour un ressort REST application MVC?

Je suis nouveau pour écrire une WS basée sur le repos de printemps. J'ai créé un projet avec la structure suivante.

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)

J'ai commencé à ajouter des pojos dans le paquet de domaine, mais mon problème est que j'ai 2 types de pojos dans mon application. Un type qui correspond à ma structure de la table d'application. Un autre type correspondant à une structure de résultat tiers.

Je ne sais pas comment je peux différencier ces 2 types de pojo sous mon package de domaine.

25
user811433

la plupart des projets ressemblent à ce que vous avez décrit. L'emballage de domaine intérieur aurait un package utilisateur où il aurait tous les pojos liés à l'utilisateur. Sur DAO, le service existerait également les mêmes sous-paquets.

Mais une organisation que je pense qu'il est préférable de diviser les paquets est de cette façon:

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

Et donc ça va. Je l'ai vu pour la première fois sur parler d'un gars de la source de printemps. Je vais essayer de trouver la vidéo.

Quoi qu'il en soit, je travaille sur un projet avec cette stratégie pendant quelques mois et jusqu'à présent, il semble plus organisé que la voie traditionnelle.

Si un paquet, par exemple les utilisateurs, deviennent trop encombrés, vous pouvez toujours créer des sous-packages à organiser à l'intérieur. Mais pour la plupart des emballages, ce seront 1 ou 2 classes de domaine, un DAO et un service. Donc, il n'y a pas besoin de plus de paquets.

MISE À JOUR: Je pense que c'est la vidéo: http://www.youtube.com/watch?v=Tem0USDF-7

41
digao_mb

Permet de venir du module/point de vue de la bibliothèque.

C'est bon d'avoir séparé la bibliothèque logique métropolome à l'extérieur de l'application, conservez-la séparé de la bibliothèque de test et de la bibliothèque de repos pour embrasser la bibliothèque de la logique métier principale en utilisant la fonctionnalité à l'intérieur de la logique métier principale.

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