Evet, @Tacacactional'ı özel yöntemlerde kullanmak mümkündür, ancak diğerlerinin de belirttiği gibi bu kutudan çıkmaz. AspectJ kullanmanız gerekir. Nasıl çalıştıracağımı anlamak biraz zaman aldı. Sonuçlarımı paylaşacağım.
Yükleme zamanı dokuma yerine derleme zamanı dokuma kullanmayı tercih ettim çünkü bence genel olarak daha iyi bir seçenek. Ayrıca, Java 8 kullanıyorum, bu yüzden bazı parametreleri ayarlamanız gerekebilir.
İlk olarak, aspectjrt bağımlılığını ekleyin.
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.8</version>
</dependency>
Sonra Maven gerçek baytkod dokuma yapmak için AspectJ eklentisi ekleyin (bu minimal bir örnek olmayabilir).
<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>
Son olarak bunu yapılandırma sınıfınıza ekleyin
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
Şimdi @Transactional'ı özel yöntemlerde kullanabilmelisiniz.
Bu yaklaşım için bir uyarı: IDE'nizi AspectJ'den haberdar olacak şekilde yapılandırmanız gerekecektir, aksi takdirde uygulamayı Eclipse aracılığıyla çalıştırırsanız çalışmayabilir. Bir sağlık kontrolü olarak doğrudan bir Maven yapısına karşı test ettiğinizden emin olun.