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.
Hi there, just wanted to tell you, I enjoyed this blog
post. It was practical. Keep on posting!
My site: turning stone casino birthday Free play
how to bet horse races online
my web page … Dog Racing betting Systems
Hi just wanted to give you a quick heads up and let you know a few of the pictures arent loading correctly. Im not sure why but I think its a linking issue. Ive tried it in two different browsers and both show the same outcome. https://share.google/tKRKZkm42G3oEg4Vv
Valuable info. Fortunate me I found your web site unintentionally and Im stunned why this coincidence didnt took place earlier I bookmarked it. https://share.google/1VyUFw7YheC8j6w1B
free bet ascot
Feel free to surf to my web-site :: is dog racing legal in uk
mostbet bonus cashback https://mostbet57648.help
mostbet app http://mostbet2025.help
mostbet výběr na bankovní účet https://mostbet2020.help
non runners at horse racing today
Here is my web page: https://Horse-betting.com/
Oh my gooԀness! Incredible article dude! Thank you,
However I am going through issues wuth your RႽS.
I don’t understand the reason why I cannot subscriƅe
to it. Is thеre anyone else getting thhе same RSS
issues? Anyone who knows the solution will you kindly respond?
Thanks!!
Here is myy web sjte :: راهنمای کامل کاربران برای
بازی انفجار آنلاین (dlsoft.ir)
I’m not sure where you’re getting your info, but great topic.
I needs to spend some time learning more or understanding more.
Thanks for wonderful information I was looking
for this information for my mission.
Hmm it seems like your website ate my first comment (it was extremely long) so I guess I’ll just sum it up what I had written and say, I’m thoroughly enjoying your blog.
I too am an aspiring blog writer but I’m still new to the whole thing.
Do you have any points for newbie blog writers? I’d really
appreciate it.
Article writing is also a excitement, if you be acquainted with afterward you
can write if not it is difficult to write.
I amm reallү glad tо read this ѡeƄlog posts which consists off plenty of useful factѕ, thanks for providing these
kindѕ of statistics.
Look into my web sitе :: نکاتی برای افزایش شانس در بازی انفجار آنلاین
melbet регистрация не работает melbet регистрация не работает
mostbet pobranie mostbet pobranie
mostbet site oficial online https://www.mostbet57648.help