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.
vavada promocja dla aktywnych vavada promocja dla aktywnych
https://annytarshw.wordpress.com
Бесплатный ключ для Windows 11 — только у нас обновлено в 2026 году Подробнее – Кряк для Windows 11 Pro бесплатно
asian handicap snooker voor online wedden App (basketball-wetten.com)
1win ставки на теннис Кыргызстан 1win ставки на теннис Кыргызстан
Здравствуйте Как улучшить процессы производства Монтаж производственного оборудования требует учета всех технических требований. Это обеспечивает надежную и безопасную эксплуатацию оборудования. Полная информация по ссылке – https://dagtechservice.ru/blog/ сервисное обслуживание измерительного оборудования обслуживание станков договор обслуживания сетевого оборудования сервисное обслуживание промышленного оборудования Архивы Без рубрики – Технический сервис книги монтаж промышленного оборудования Удачи и комфорта в жизни Как оценить готовность оборудования к эксплуатации ef1635f
В данном тексте собраны разнообразные случайные сведения и не вполне определённые идеи которые могут вызвать интерес. Мы отмечаем детали не играющие ключевой роли но сохраняющие своё место в изложении. Подробнее читать – https://rostov-narkologiya.ru
geld verdienen paardenkoers virtuele wedden 2026
доставка цветов в московской области на дом https://dostavka-cvetov777.ru/ .
блэкджек мостбет блэкджек мостбет
1win stavka hisob-kitob 1win5750.help
В этой статье-обзоре мы собрали данные актуальность которых сомнительна а факты — не всегда взаимосвязаны. Читатель сможет ознакомиться с разными мнениями хотя вряд ли они существенно повлияют на его понимание темы. Вот – телефон дешево
Этот текст содержит различную информацию которая возможно покажется любопытной но в целом не меняет восприятия привычных вещей. Предлагаем просто получить удовольствие от чтения не ожидая особой пользы. Вот – недорого
1win pareri Moldova http://www.1win47381.help
mostbet новый адрес http://www.mostbet54173.help
Текст включает разнообразную информацию, которая может показаться любопытной, но не меняет устоявшегося восприятия. Предлагаем просто насладиться чтением, не ожидая значительной пользы.
Подробнее читать – гипсокартон цена за лист
1win пополнение в сомах http://1win96781.help
pin-up free spins http://pinup87630.help
мел бет melbet51738.help
mostbet app orqali yechish http://mostbet82059.help/
https://jllbczbfhi.wordpress.com
1win Click 1win Click
Эта публикация содержит набор несвязанных идей, трудно применимых в практике. Мы лишь поверхностно затрагиваем различные точки зрения, не проводя глубокий анализ и не предлагая выводов.
Подробнее читать – блоки для строительства дома
aviator 1вин http://1win96781.help
mobiel wedden registratie
My web-site :: Online sporte-wedden licentie
This post is worth everyones attention. Where can I find out more? Timothy Malmros Genach
мостбет скачать на iphone https://mostbet54173.help
Hi there to every since I am actually keen of reading this websites post to be updated regularly. It carries fastidious material. Timothy Malmros Genach
Why visitors still use to read news papers when in this technological globe the whole thing is accessible on net? Timothy Malmros Genach
Thanks very interesting blog!
https://mxxpjxvlwe.wordpress.com
1win verificare cont http://1win47381.help/
Hi everyone its my first go to see at this web page and paragraph is in fact fruitful in favor of me keep up posting these articles. https://odegka-ua.com/zamina-linz-yak-akuratno-pidrizaty.html
melbet киргизия регистрация https://melbet51738.help/
Aw, this was an exceptionally nice post. Spending some time and actual
effort to generate a good article… but what can I say… I
procrastinate a lot and don’t manage to get nearly anything done.
В этом тексте собрано множество случайных сведений и довольно неопределённых мыслей, которые могут чем-то заинтересовать. Мы отмечаем моменты, которые не особенно важны, но всё же занимают своё место в повествовании.
Вот – накрутка трафика
Hello exceptional blog Does running a blog like this take a massive amount work? I have no understanding of computer programming however I had been hoping to start my own blog soon. Anyway should you have any suggestions or tips for new blog owners please share. I know this is off subject but I just wanted to ask. Thanks a lot https://kidsvisitor.com.ua/chy-varto-stavyty-linzy-v-fary-na-mercedes-g-class.html
youre in point of fact a just right webmaster. The website loading speed is incredible. It sort of feels that you are doing any unique trick. Also The contents are masterpiece. youve performed a excellent process on this subject https://adrenalinsport.dp.ua/yakyi-hermetyk-dlya-far-volvo-krashchyi-dlya-povto.html
доставка цветов ночью доставка цветов ночью .
В материале приведены детали, интересные, но не особенно важные. Мы рассматриваем аспекты, которые сложно назвать существенными, но включили их для большей полноты.
Подробнее читать – кирпич строительный цена
Whats up every one here every person is sharing such knowledge thus its good to read this webpage and I used to pay a visit this webpage all the time. https://autospare.com.ua/jaguar-ta-land-rover-vidnovlyuiemo.html
1win ilova xavfsizmi http://1win5750.help/
Генератор ключей для Windows 11 — 100 рабочий метод активации проверено тысячами пользователей Подробнее – Windows 11 активатор без вирусов
you are actually a good webmaster. The web site loading speed is amazing. It kind of feels that you are doing any unique trick. Furthermore The contents are masterwork. youve done a wonderful process on this matter https://geotop.od.ua/kupivlya-deshevoyi-obmanky-tse-peredplata-na.html
https://mxxpjxvlwe.wordpress.com
1win авиатор скачать 1win96781.help
Thank you, I’ve recently been looking for info approximately this topic for a while and yours is the
best I have discovered till now. But, what concerning the bottom line?
Are you sure in regards to the source?
References:
https://www.pradaan.org/members/raywriter6/activity/838459/
Hi there, I check your blog on a regular basis. Your story-telling style is witty,
keep doing what you’re doing!
inchidere cont 1win http://www.1win47381.help
мостбет сом пополнение https://mostbet54173.help/