हां, निजी तरीकों पर @ ट्रांसेक्शनल का उपयोग करना संभव है, लेकिन जैसा कि अन्य ने उल्लेख किया है कि यह बॉक्स से बाहर नहीं होगा। आपको AspectJ का उपयोग करने की आवश्यकता है। मुझे यह समझने में कुछ समय लगा कि यह कैसे काम कर रहा है। मैं अपने परिणाम साझा करूंगा।
मैंने लोड-टाइम बुनाई के बजाय संकलन-समय बुनाई का उपयोग करना चुना क्योंकि मुझे लगता है कि यह एक बेहतर विकल्प है। इसके अलावा, मैं जावा 8 का उपयोग कर रहा हूं ताकि आपको कुछ पैरामीटर समायोजित करने की आवश्यकता हो।
सबसे पहले, aspectjrt के लिए निर्भरता जोड़ें।
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.8</version>
</dependency>
फिर मेवेन में वास्तविक बाइटकोड बुनाई करने के लिए AspectJ प्लगइन जोड़ें (यह एक न्यूनतम उदाहरण नहीं हो सकता है)।
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
अंत में अपने config वर्ग
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
में जोड़ना अब आप निजी तरीकों पर @Transactional उपयोग करने के लिए सक्षम होना चाहिए।
इस दृष्टिकोण के लिए एक चेतावनी: आपको एस्पेक्टजे के बारे में जागरूक होने के लिए अपने आईडीई को कॉन्फ़िगर करने की आवश्यकता होगी अन्यथा यदि आप ग्रहण के माध्यम से ऐप चलाते हैं तो उदाहरण के लिए यह काम नहीं कर सकता है। सुनिश्चित करें कि आप सीधे मैवेन के खिलाफ एक सैनिटी चेक के रूप में परीक्षण करें।
स्रोत
2016-02-28 20:21:36
क्या आप इस बारे में निश्चित हैं? मैं इससे कोई फर्क नहीं पड़ता। – willcodejavaforfood
हालांकि यह मोड = "aspectj" के साथ काम करेगा हालांकि। – waxwing
@ विल्लकोडावाफॉर्फूड: उद्धरण देखें – skaffman