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://metro-estates.ch/agent/criticismont90/
nové casino bezpečné vip bonus
https://pad.gusted.xyz/s/lFOHavqYj
betting analysis today offers today
Реутов всем привет Отец не выходит из штопора Соседи стучат в стену Нужен врач прямо сейчас Короче врач приехал и поставил систему — нарколога на дом реутов с препаратами Через пару часов человек пришёл в себя В общем не потеряйте контакты — нарколог на дом реутов https://klinika.narkolog-na-dom-moskva-tfb.ru Не ждите пока станет хуже Перешлите тем кто в такой же ситуации
https://xn--mts547b.xn--cksr0a.tw/home.php?mod=space&uid=4250
euros top scorer betting online sports
https://www.lissubito.com/author/showedcpq9354/
casino visa minimální vklad (https://wp.smgs.si/www.nk-rudar-trbovlje.si/kasino-online-bez-registrace-2026/) Brno bonus
nelegální mobilní casino applepay cz
https://pads.zapf.in/s/fgsfvzngQe
https://zukongguan.shop/home.php?mod=space&uid=230615
kde hrát ruletu české online casino otočky zdarma bez vkladu 2026 (Glen)
za peníze
http://fumankong11.cc/home.php?mod=space&uid=934115
https://hedgedoc.dhsn.de/s/zdwBPlOFz
http://szhk.on-line.com.hk/home.php?mod=space&uid=140980&do=profile&from=space
zahraniční online casino Ústí nad Labem bonus za registraci,
Kory,
free spiny
https://hedgedoc.sysnove.net/s/qg15qfy5L
So moving — total ordeal. Dealt with it not too long ago and honestly an absolute whirlwind. You grab a few boxes then the sheer volume hits you. I heard mixed things from everyone but I wanted to verify everything. So heres the long and short: when youre after trustworthy movers in the area do some legwork first. Think about it: experienced operators deal with heat like pros — when time is money. Heres my approach — rang up a few outfits — and you can take this to the bank I saved both cash and nerves. Check out this resource that gave me direction. nevada long distance movers https://movers-in-nevada-bng.com That one spot saved me hours. No funny business with rates — transparent to the core. Scheduled via that resource and it was refreshingly smooth. So be thorough. Ask about their license. Good help is worth every penny. Hope this helps you navigate the chaos
https://theexplorers.com/user?id=d9edd89a-9482-4da5-bc72-f92e90e9270d
ruby fortune online pokies canada, united statesn original
slot machine game and free no deposit australian casino, or free united statesn slot machine games
my homepage; Number Generator roulette wheel
cómo se pagan las apuestas bono por registro casa de apuestas [Jordan] caballos
site de Porque Odds apostas esportivas e-sports
https://gratisafhalen.be/author/milwaukeevwr39/
https://schoolido.lu/user/sexuallyjvi626/
https://pad.riot-os.org/s/XPH4irvKLw
scommesse Facili oggi giro d italia
casas eurocopa Apuestas ganador deportivas nuevas
top italia scommesse dazn (Rosemary)
strategie bei sportwetten
My web page – basketball punkte wetten
migliore app per pronostici scommesse (https://www.randagility.it/2026/06/05/cosa-indossare-moda-nel-tennis-professionistico/) italia belgio
http://shichaoliuluntan.com/home.php?mod=space&uid=420531
Mejor Casa De Apuestas Deportivas Foro
nfl super bowl
https://schoolido.lu/user/treknuo69/
pagina Apuestas En Casino españa
varne stavnica
my web blog: spletne stavnice brez licence najboljše (Latosha)
http://onlineboxing.net/jforum/user/edit/470191.page
top goal sportwetten
Check out my homepage … was heißt hc 0 7 5 2 bei basketball wetten
https://mathemagiciansclub.com/author/robgsn6998/
Basketball Viertel Wetten dass wettkönig gewinn
Ребята кто ищет работу Вечно то зарплата копейки Работодатели только время тратят Короче единственный где есть нормальные предложения — поиск работы в казахстане по специальности Проживание и питание часто включены В общем смотрите сами по ссылке — вакансии кз вакансии кз Не сидите без денег Перешлите тому кто ищет работу
пункт за залагания Търговище
my web page – точни прогнози (Nannie)
site apostas bonus
My web site: aposta Esportiva lotinha resultado (https://laboratoriodefilosofiacontemporanea.com/)
https://telegra.ph/Tvorozhnaya-zapekanka-v-duhovke-bez-manki-recept-11-19