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.
sweet bonanza solución no abre sweet bonanza solución no abre
jackpot melbet melbet89725.help
Thank you for some other great post. Where else could anyone get that
kind of information in such an ideal approach of writing?
I have a presentation subsequent week, and I am at the search for such information.
Yesterday, while I was at work, my sister stole my
iPad and tested to see if it can survive a 25 foot drop, just so she can be a youtube sensation. My iPad is now broken and
she has 83 views. I know this is completely off topic but I had
to share it with someone!
1win проверка личности при выводе 1win проверка личности при выводе
мелбет чат http://www.melbet63047.help
мостбет Халык банк https://mostbet09754.help
I know this site offers quality dependent posts and additional material, is there any other site which offers such things in quality?
1win çıxarış Azərbaycan http://1win19435.help
1вин как установить apk 1win95124.help
sweet bonanza espejo sweet bonanza espejo
expres melbet expres melbet
mostbet creare cont rapid https://mostbet57648.help
Thankѕ fоr finalloy talking about > Integration testing
transactions aand optimistic llocking with Spring and JUnit | frrestyⅼe developments راهنمای کاربران برای
تجربه بازی انفجار آنلاین
Have you ever considered publishing an e-book
or guest authoring on other websites? I have a blog based upon on the same subjects you discuss and would really
like to have you share some stories/information. I know my visitors would enjoy
your work. If you’re even remotely interested, feel free to shoot me an email.
Fortune Ox ganhou tração no fim do dia.
mostbet бонус за регистрацию mostbet бонус за регистрацию
mostbet nie mogę wejść mostbet nie mogę wejść
мелбет скачать на андроид киргизия https://melbet16740.help/
lucky jet mostbet lucky jet mostbet
I enjoy reading a post that will make men and women think.
Also, thanks for allowing me to comment!
1win промокод при регистрации http://1win95124.help/
Whаt a materiaⅼ of un-ambiguity and preserveness of precious knowledge concerning unpreɗicted emotions.
My Ƅlog :: معرفی یک مرجع خوب برای علاقهمندان
بازی انفجار (bndc.ir)
What’s up everyone, it’s my first visit at this site, and piece of
writing is actually fruitful in support of me, keep up posting these types
of articles.
mostbet ingyenes nyerőgépek mostbet ingyenes nyerőgépek
mostbet občanský průkaz ověření http://mostbet2020.help/
mostbet ставка экспресс https://mostbet09754.help
Tһat is a gooԀ ttip especially to thhose new tto the blοgosphere.
Brief butt very accurate іnfo… Thanks for sharig this one.
A muѕt read article!
My web bloց معرفی یک مرجع خوب برای علاقهمندان بازی انفجار
Awesome Its really remarkable article I have got much clear idea about from this article. https://share.google/JLilCsBXV2ZVV6MOC
Fortune Rabbit sustentou boa performance em blocos curtos.
Pⅼease let me know if you’re looking for a wгiter for
yor blog. You haᴠe some really grеat posts and I think I would be a
good asset. If you ever want to take some of the loаd off,
I’d love to write some сontent fߋr your blog in exchange for a lin back to
mine. Please send me an e-mail iff interested. Many thanks!
Also visit my web site :: نکات حرفهای برای کاربران بازی انفجار
What a daуa of un-ambiguitу and preserveness of valuable knowledge onn
the topiс of unexpected emotions.
my website: آموزش ساده و کاربردی برای بازی انفجار آنلاین
Hello there I am so excited I found your weblog,
I really found you by mistake, while I was researching on Google for something else, Anyways I am here now and would just like to say thanks a lot
for a incredible post and a all round exciting blog (I also love the theme/design), I don’t have time to read through it all at the minute but I have saved it and also added in your RSS feeds, so
when I have time I will be back to read a lot more, Please do
keep up the great jo.