I did some badness today.
I wanted an integration test to check to see if my @Transactional method actually did rollback on an optimistic lock failure. It’s a pretty business critical method so I wanted to be sure that the whole @Transactional and @Version annotation voodoo actually works.
The approach I took was to inject, what I called a “slowRepository” into the object with the @Transactional method. The slowRepository is just a mockito mock of the object which “answers” (using “thenAnswer”) to the “findBy…” with some custom code.
The idea is that at some point during the @Transactional method the slowRepository is called and the “answer” code is invoked. In the test, the answer code follows along the lines of:
1. Grab the data it requires from the (not slow) repository (the repository the slowRepository is mocking)
2. Switch back the slowRepository for the not slow repository
3. Invoke the @Transactional method again on a separate thread
4. Sleep for a bit
5. Wake up and return the data from step 1
The @Transactional call on the separate thread completes and commits before slowRepository wakes up. When it does, slowRepository returns stale data and the @Transactional method then fails accordingly.
The problem I encountered was using the setters for my @Autowired dependencies on the bean with the @Transactional method. I needed to use the setters so that I could switch in and out the slowRepository, but couldn’t because Spring AOP proxies are implementations of an interface, not subclasses (by default – yes I realise you can get Spring to proxy the target class using CGLIB). I found this blog post which explains how to get at the target object behind a Spring proxy. I converted it to Scala:
…which is pretty ninja.
https://rentry.co/y54zue5q
https://f92rcs.zombeek.cz
сиалис
ставки на спорт мелбет ставки на спорт мелбет .
аптека будь здоров сиалис
https://paiza.io/projects/WlMxHwiQDGuJDWEpDc1SiA
https://telegra.ph/Pitatelnye-01-10
https://site998639318.fo.team
https://telegra.ph/Domashnie-kinoteatry-samsung-11-15
https://paiza.io/projects/TQyGysnfGsnLKLWZXTGUAg
https://site553769113.fo.team
wettstrategie doppelte chance
Check out my web blog: basketball-wetten.Com
https://site573973835.fo.team
https://site464508108.fo.team
мелбет букмекерская контора скачать на айфон мелбет букмекерская контора скачать на айфон .
https://telegra.ph/Steelseries-siberia-raw-prism-01-07
https://cg8xsl.zombeek.cz
https://telegra.ph/Yapboz-oyunlari-02-09
https://telegra.ph/Centr-1-11-10
https://telegra.ph/Desyat-yardov-smotret-onlajn-11-12
попперс Хабаровск
дешевые букеты с доставкой москва – Орхидеи в элегантной упаковке доступны
отличия сиалис от виагры
букет цветов в москве с доставкой – Композиции в деревянных ящиках эко-стиль
https://rentry.co/uizfq2om
https://paiza.io/projects/nGLtW23nSZruQH-ozv4W2Q
https://site111600321.fo.team
препараты по типу виагры
https://telegra.ph/Povyshenie-pensii-v-2017-godu-rabotayushchim-pensioneram-po-starosti-11-09
https://site429265631.fo.team
https://telegra.ph/Sportpit-volgograd-11-18
https://site392127572.fo.team
https://site108562067.fo.team
buchmacher pferderennen deutschland
Check out my blog post :: beste wettanbieter ohne oasis
пробник виагра купить
https://rentry.co/aef5zbud
https://teletype.link/proportionnvi1133
купить попперс Пенза
https://teletype.link/disordersdzv726
https://telegra.ph/Trk-fokus-kinoteatr-ehtazh-raspisanie-seansov-chelyabinsk-11-23
виагра или подобные
https://rentry.co/xmv3qezs
alle beste wettanbieter test betrugstest (Gratis-wetten.com)
https://telegra.ph/CHajnik-dorozhnyj-02-16
мелбет мелбет .
https://telegra.ph/Ponyatie-i-predmet-trudovogo-prava-11-18
https://rentry.co/bxbkiftp
https://telegra.ph/CHto-mozhno-prigotovit-s-farsha-11-17
wettbüro hannover
My webpage :: südamerika strategie Sportwetten (https://diariodeportivo.unifutbol.com/2025/10/bez-rubriki/wirwetten-eu/)
купить super p-force Мск