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://paiza.io/projects/G3NWI_pBgwIwNk9SiOR1aQ
sportwetten tipps forum
My site :: basketball live wetten
handicap wette
Here is my web page basketball bundesliga wetten [Lorenzo]
https://www.instructorsnearme.com/author/wingsdiy8109/
https://hedgedoc.dhsn.de/s/C9j3M_eaf
https://telegra.ph/Hardkor-bez-cenzury-smotret-02-21
https://md.jakefarrell.ie/s/EM0tYHJZ25
wettstrategie kombiwette
Look at my web blog – auf basketball wetten
https://www.diggerslist.com/upcomingsrg1383/about
dicas para apostar ao vivo
Feel free to visit my site – calculadora apostas simples
(Tanja)
https://www.roton.com/forums/users/5z2b4mnlqk/
casino Neue casinos mit Ohne lugas 200 euro einzahlung paypal
https://pad.interhop.org/s/9_QuqFkJkg
https://zukongguan.shop/home.php?mod=space&uid=230700
how do poker machines work in australia, play free online pokies nz and casino
400 welcome bonus (https://Brahmandas.com/2026/08/08/60-free-spins-no-deposit-uk-2026/)
online real money canada, or free spins no deposit on registration nz
online pokies canada legal, united kingdom idol time slot and ontario australia online
gambling, or uk slot streamers
Feel free to surf to my page :: Bus to wind creek casino Bethlehem pa
melhores sites aposta
my web-site … esporte mais apostas
https://gratisafhalen.be/author/louisvillexjb5456/
https://hedgedoc.studentiunimi.it/s/gMzLnHsoB
best online poker tournaments uk, in casino in usa and
casino chip values usa, or new casino bingo no deposit bonus win Real money uk
ruleta online casino Hradec Králové bonus bez vkladu; Richard, mastercard
https://www.lissubito.com/author/citizendkz388/
latvija čehija koeficienti
Here is my homepage; Likmes uz e-Sportu
quais jogos apostar hoje
Here is my web-site apostas Desportivas pt
top 20 kasyn z licencją
My page bezpieczne kasyno online bez weryfikacji
kasyno depozyt 1 zł
my blog ruletka na żywo za rejestrację
https://onespotsocial.com/blairogr4855
Люди помогите советом Ситуация критическая Родственники не знают что делать Нужен врач прямо сейчас Короче только это реально спасло — вызов наркологической помощи с гарантией Через пару часов человек пришёл в себя В общем не потеряйте контакты — заказать нарколога https://zapoj.narkologicheskaya-pomoshh-v-kazani16.ru Звоните прямо сейчас Перешлите тем кто в такой же ситуации