2013-10-09 9 views
20

मैं एक वसंत आराम आधारित 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) 

मैं डोमेन पैकेज में POJOs बढ़ने लगा है, लेकिन मेरी समस्या मैं अपने आवेदन में POJOs के 2 प्रकार है कि है। एक प्रकार जो मेरे आवेदन तालिका संरचना से मेल खाता है। एक अन्य प्रकार जो किसी तृतीय पक्ष परिणाम संरचना से मेल खाता है।

मुझे यकीन नहीं है कि मैं अपने डोमेन पैकेज के तहत इन 2 POJO प्रकारों को कैसे अलग कर सकता हूं।

उत्तर

34

अधिकांश परियोजनाएं आपके द्वारा वर्णित की तरह दिखती हैं। डोमेन पैकेज के अंदर एक उपयोगकर्ता पैकेज होगा जहां इसमें सभी उपयोगकर्ता संबंधित pojos होंगे। दाओ पर, सेवा भी वही उप पैकेज मौजूद होगी।

लेकिन एक संगठन मुझे लगता है कि यह सबसे अच्छा है संकुल विभाजित करने के लिए है इस तरह से है:

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

और इसलिए यह हो जाता है। मैंने स्प्रिंग सोर्स के एक लड़के से बात करने पर पहली बार देखा। मैं वीडियो खोजने की कोशिश करूंगा।

वैसे भी, मैं कुछ महीनों के लिए इस रणनीति के साथ एक परियोजना पर काम कर रहा हूं, और अब तक यह पारंपरिक तरीके से अधिक व्यवस्थित लगता है।

यदि पैकेज, उदाहरण के लिए उपयोगकर्ता बहुत भीड़ बन जाते हैं, तो आप हमेशा इसके अंदर व्यवस्थित करने के लिए उप-पैकेज बना सकते हैं। लेकिन अधिकांश पैकेजों के लिए यह 1 या 2 डोमेन क्लासेस, एक डीएओ और एक सेवा होगी। इसलिए अधिक पैकेज की आवश्यकता नहीं है।

अद्यतन: मुझे लगता है कि इस वीडियो है: http://www.youtube.com/watch?v=tEm0USdF-70

+2

यह दास सामान्य दाओ/नियंत्रक/सेवा/इकाई दृष्टिकोण से काफी बेहतर है। एक साइड नोट के रूप में: हर बार जब मैं इसे डेवलपर्स के साथ पेश करता हूं तो वे चौंक जाते हैं (और इस प्रकार इसे आज़माने के लिए तैयार नहीं हैं) कितने पैकेज ग्रहण अपने फ्लैट पैकेज व्यू (डिफ़ॉल्ट) में दिखाते हैं। बस पदानुक्रमिक प्रतिनिधित्व पर स्विच करें और आप ठीक हैं। – atamanroman

+2

ध्यान रखें कि यदि आप वसंत का उपयोग कर रहे हैं और केवल विशिष्ट प्रकार के वर्गों को तुरंत चालू करना चाहते हैं (केवल डीएओ के बिना मॉडल कहें) तो आप घटक स्कैन कुशलतापूर्वक उपयोग करने में सक्षम नहीं होंगे। –

+0

केवल विशिष्ट प्रकार के वर्गों को तुरंत चालू करने के लिए उपयोगकेस क्या है? (गंभीर प्रश्न :)) –

5

आ देखने के मॉड्यूल/पुस्तकालय बिंदु से लगता है की सुविधा देता है।

एप्लिकेशन के बाहर कोर बिजनेस लॉजिक लाइब्रेरी को अलग करने के लिए अच्छा है, इसे कोर लाइब्रेरी लॉजिक के अंदर कार्यक्षमता का उपयोग करके कोर लाइब्रेरी लॉजिक लाइब्रेरी को गले लगाने के लिए टेस्ट लाइब्रेरी से अलग रखें।

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") 
संबंधित मुद्दे

 संबंधित मुद्दे