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.
Fortune Tiger stays hot but the dispute is more open now.
Hey! I know this is kinda off topic however , I’d figured I’d ask.
Would you be interested in trading links or maybe guest authoring a blog article or vice-versa?
My blog covers a lot of the same topics as yours and I believe we could
greatly benefit from each other. If you might be interested feel free to shoot
me an e-mail. I look forward to hearing from you! Fantastic blog by
the way!
1win создать аккаунт https://1win92486.help
At this moment I am ready to do my breakfast, later than having my breakfast coming over again to read additional news.
pin-up bloklanmanı keçmək pin-up bloklanmanı keçmək
1win зеркашӣ бе хато https://1win26514.help/
mostbet Oʻzbekiston registratsiya https://www.mostbet59371.help
Hello I realize this is sort of off-topic however I needed to ask. Does managing a well-established website like yours require a massive amount work? I am completely new to operating a blog however I do write in my journal everyday. Id like to start a blog so I can share my personal experience and thoughts online. Please let me know if you have any kind of recommendations or tips for brand new aspiring bloggers. Thankyou Sweet Bonanza
I will right away clutch your rss feed as I can’t to find your email subscription hyperlink or newsletter service.
Do you’ve any? Kindly permit me recognise in order that I may
subscribe. Thanks.
mostbet promocja rejestracja https://mostbet2002.help
мелбет скачать android киргизия http://melbet45163.help
Pretty This has been an incredibly wonderful post. Thanks for providing this information. Wolf Gold
Hi there This post could not be written any better Reading this post reminds me of my old room mate He always kept chatting about this. I will forward this write-up to him. Pretty sure he will have a good read. Thank you for sharing Hot to Burn Multiplier
Hi there mates its enormous post about tutoringand completely explained keep it up all the time. Sweet Rush Bonanza
Почему пользователи выбирают площадку KRAKEN?
Маркетплейс KRAKEN заслужил доверие многочисленной аудитории благодаря сочетанию ключевых факторов.
Во-первых, это широкий и разнообразный ассортимент, представленный сотнями продавцов.
Во-вторых, интуитивно понятный интерфейс KRAKEN,
который упрощает навигацию, поиск товаров и управление заказами даже для новых пользователей.
В-третьих, продуманная система безопасных транзакций,
включающая механизмы разрешения споров
(диспутов) и возможность использования условного депонирования, что минимизирует риски для обеих сторон сделки.
На KRAKEN функциональность сочетается
с внимательным отношением к безопасности клиентов,
что делает процесс покупок более предсказуемым,
защищенным и, как следствие, популярным среди пользователей,
ценящих анонимность и надежность.
Hey Do you know if they make any plugins to assist with Search Engine Optimization? Im trying to get my blog to rank for some targeted keywords but Im not seeing very good success. If you know of any please share. Kudos Starburst
Good day Do you know if they make any plugins to safeguard against hackers? Im kinda paranoid about losing everything Ive worked hard on. Any suggestions? Starburst
References:
Cash casino calgary
References:
https://omegat.dmu-medical.de/leighloera2399
мостбет удалить аккаунт http://www.mostbet09654.help
1win Кыргызстан кирүү 1win92486.help
мелбет live ставки мелбет live ставки
mostbet saytda mines http://www.mostbet59371.help
mostbet paysafecard wpłata http://www.mostbet2002.help
Howdy just wanted to give you a quick heads up.
The words in your content seem to be running off the screen in Firefox.
I’m not sure if this is a formatting issue or
something to do with browser compatibility but I
figured I’d post to let you know. The design look great though!
Hope you get the problem solved soon. Thanks
Ahaa, its fastidious discussion on the topic of this
piece of writing here at this webpage, I have read all that, so
now me also commenting at this place.
мелбет зеркало ош мелбет зеркало ош
sportwetten online test (https://www.topcloud.co.ke/2025/10/06/spiel-wetten) wetten erfahrung
sportwetten forum tipps
my web page … kombiwette ein spiel falsch (volar.qa)
мостбет майнс http://mostbet09654.help
buchmacher lizenz
my homepage; basketball wetten gerade Ungerade
sportwetten schweiz legal (Mose)
strategie ohne verlust
“termal battaniye hangi taraf?” konusu icin burada harika bilgiler var. Link burada: https://kendiyolu.com/articles/termal-battaniye-kullanimi-hangi-tarafi-secme/
mostbet zakłady mobilne http://mostbet2002.help
app Sportwetten Vorhersagen app
buchmacher app
Here is my site :: Sportwetten geld zurück
melbet aviator коэффициент melbet49375.help
melbet вейджер бонуса melbet вейджер бонуса
Почему пользователи выбирают площадку KRAKEN?
Маркетплейс KRAKEN заслужил доверие многочисленной аудитории благодаря сочетанию ключевых факторов.
Во-первых, это широкий и разнообразный ассортимент, представленный сотнями продавцов.
Во-вторых, интуитивно понятный интерфейс KRAKEN,
который упрощает навигацию, поиск товаров и управление заказами
даже для новых пользователей.
В-третьих, продуманная система безопасных
транзакций, включающая механизмы разрешения споров
(диспутов) и возможность использования
условного депонирования, что минимизирует риски для обеих сторон сделки.
На KRAKEN функциональность сочетается
с внимательным отношением к безопасности клиентов, что делает процесс покупок более предсказуемым, защищенным и, как следствие, популярным среди пользователей, ценящих анонимность и надежность.
mostbet instaluj pl https://www.mostbet2002.help
mostbet login with email mostbet94827.help
1win android yuklab olish https://1win59801.help
как внести депозит mostbet http://www.mostbet15384.help
1win версияи нав http://www.1win26514.help
pin-up crash donur http://pinup2010.help/
Hey there! I could have sworn I’ve been to this website before but
after browsing through some of the post I realized it’s new to me.
Nonetheless, I’m definitely happy I found it and I’ll be bookmarking and checking back frequently!
Thanks for finally talking about > Integration testing transactions
and optimistic locking with Spring and JUnit | freestyle developments < Liked it!
мелбет регистрация аккаунта мелбет регистрация аккаунта
мелбет ios мелбет ios