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.
1вин plinko http://1win74028.help
Thanks for sharing your thoughts about polymarket bet.
Regards
1win apk download Republica Moldova http://www.1win82376.help
Its such as you read my thoughts! You seem to
understand so much about this, such as you wrote the book in it or something.
I feel that you simply could do with a few % to drive the message house a bit, but instead
of that, that is magnificent blog. An excellent read.
I will certainly be back.
1win qeydiyyat bonusu Azərbaycan 1win30895.help
I constantly spent my half an hour to read this blog’s articles all the time along with a mug of coffee.
мостбет crash стратегия https://mostbet50693.help/
melbet как отыграть бонус melbet59738.help
1win казино Ош https://1win74028.help
1win pacanele demo https://1win82376.help/
1win hesab təsdiqi 1win hesab təsdiqi
در پایان کار
برای دوستداران
بازی انفجار آنلاین
وقت صرف میکنن
این سایت خوب
میتونه واقعاً
به درد بخوره
نکته قابل توجه اینه که
پلتفرمهایی مثل
سایت enfejaronline
و
ѕib-bet
تونستن کاربرا جذب کنن
خلاصه اینکه
تجربه مثبتی داشتم
و
به زودی
استفاده دوباره میکنم
Haᴠe a look at my website: قیمت طلا, Marshall,
wette vorhersage basketball wettart wetten
If you want to improve your knowledge only keep
visiting this web page and be updated with the latest information posted
here.
alle beste wettanbieter bonus; Estela,
place bet in horse racing
My site – https://horse-betting.com/
1win aviator trucuri https://1win82376.help/
handicap wette bedeutung
Also visit my blog post … Wettstrategie Unentschieden
25 free spins on sign up australia, usa casinos and remote
gambling license usa, or instant cash out casinos australia
Here is my web page … what does a casino host make
Hi there to all, for the reason that I am in fact keen of reading this
website’s post to be updated regularly. It contains pleasant material.
star888 star888 .
pferderennen leipzig wetten
My web blog – wettanbieter schnelle auszahlung
free bets on the grand national
my blog … racing results at windsor today
melbet элсом вывод melbet элсом вывод
mostbet apelsin depozit https://mostbet93504.help/
pin-up lucky jet stavka https://www.pinup61802.help
1win скачать бесплатно 1win02963.help
мостбет бонус код 2026 http://mostbet62590.help
вывод средств mostbet вывод средств mostbet
мелбет регистрация киргизия без проблем http://www.melbet18095.help
1win blackjack https://1win82376.help/
Great items from you, man. I have have in mind your stuff previous to and you
are just too fantastic. I really like what you’ve received right
here, certainly like what you are stating and the way in which
in which you are saying it. You make it entertaining and you still take care of to stay it wise.
I can not wait to learn much more from you. That is really a
tremendous website.
Having read this I believed it was rather enlightening.
I appreciate you spending some time and energy
to put this information together. I once again find myself spending a significant
amount of time both reading and posting comments. But so what, it was still
worth it!
Awesome post.
Fantastic goods from you, man. I have understand your stuff previous to and you’re
just extremely fantastic. I actually like
what you have acquired here, certainly like
what you are saying and the way in which you say it. You make
it entertaining and you still take care of to keep it
wise. I cant wait to read far more from you. This is really
a tremendous web site.