आप उन्हें इंटरफ़ेस पर रख सकते हैं, लेकिन चेतावनी दी जा सकती है कि लेनदेन कुछ मामलों में समाप्त नहीं हो सकता है। स्प्रिंग डॉक्स के सेकंडियन 10.5.6 में दूसरा टिप देखें :
स्प्रिंग ने सिफारिश की है कि आप केवल इंटरटेनमेंट एनोटेशन के विपरीत @Transactional एनोटेशन के साथ कंक्रीट कक्षाओं (और कंक्रीट कक्षाओं के तरीकों) का एनोटेट करते हैं। आप निश्चित रूप से @Transactional एनोटेशन को एक इंटरफ़ेस (या एक इंटरफ़ेस विधि) पर रख सकते हैं, लेकिन यह केवल तभी काम करता है जब आप इंटरफ़ेस-आधारित प्रॉक्सी का उपयोग कर रहे हों। तथ्य यह है कि जावा एनोटेशन को इंटरफेस से विरासत में नहीं मिला है, इसका मतलब है कि यदि आप वर्ग-आधारित प्रॉक्सी (प्रॉक्सी-लक्ष्य-क्लास = "सही") या बुनाई-आधारित पहलू (मोड = "पहलू") का उपयोग कर रहे हैं, तो लेनदेन सेटिंग्स निकटता और बुनाई के बुनियादी ढांचे द्वारा मान्यता प्राप्त नहीं है, और वस्तु को एक ट्रांसेक्शनल प्रॉक्सी में लपेटा नहीं जाएगा, जो निश्चित रूप से खराब होगा।
मैं उन्हें इस कारण से लागू करने की सलाह दूंगा।
मुझे भी, लेनदेन एक कार्यान्वयन विवरण की तरह लगता है इसलिए उन्हें कार्यान्वयन वर्ग में होना चाहिए। लॉगिंग या परीक्षण कार्यान्वयन (मॉक) के लिए आवरण कार्यान्वयन होने की कल्पना करें जिन्हें लेन-देन करने की आवश्यकता नहीं है।