Как определить структуру пакета для приложения Spring REST MVC?
Я новичок в написании ws w760 > rest. Я создал проект со следующей структурой.
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 в моем приложении.
Один тип, который соответствует структуре таблицы приложений.
Другой тип, который соответствует структуре результата третьей стороны.
Я не уверен, как я могу различать эти 2 типа POJO в моем пакете домена.
Ответы
Ответ 1
большинство проектов выглядят так, как вы описали. Внутренний пакет домена будет иметь пользовательский пакет, в котором он будет иметь все связанные с пользователем поджы. На dao служба также будет содержать те же подпакеты.
Но организация, которая, как мне кажется, лучше всего состоит в разделении пакетов, такова:
-com.company.project
- users
UserService
UserDAO
User
Role
- cart
Cart
CartService
CartDAO
ShopItem
И так оно и есть. Я впервые увидел это в разговоре с парнем из Spring Source. Я попытаюсь найти видео.
В любом случае, я работаю над проектом с этой стратегией в течение нескольких месяцев, и до сих пор кажется
более организованный, чем традиционный способ.
Если пакет, например пользователи, становится слишком переполненным, вы всегда можете создавать подпакеты для организации внутри него. Но для большинства пакетов это будет 1 или 2 класса домена, один DAO и один сервис. Поэтому нет необходимости в дополнительных пакетах.
Обновление: я думаю, что это видео: http://www.youtube.com/watch?v=tEm0USdF-70
Ответ 2
Давайте подумаем с точки зрения модуля/библиотеки.
Хорошо иметь отдельную библиотеку бизнес-логики вне приложения, поддерживать ее отдельно с тестовой библиотекой и библиотекой отдыха, чтобы охватить основную библиотеку бизнес-логики, используя функциональные возможности внутри основной бизнес-логики.
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")