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.
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
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")