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://fevmbl.zombeek.cz
самый сильный попперс
купить попперс Раменское
vavada regulamin wypłat https://vavada56378.help/
https://site716063029.fo.team
Pretty great post. I simply stumbled upon your blog and wished to mention that I’ve
really loved surfing around your weblog posts.
After all I will be subscribing on your feed and I hope you write
once more soon!
My homepage: st ignace casino age
seo агентство seo агентство .
https://teletype.link/trickonw89
виагра купить без рецептов в спб
раскрутка сайта франция цена раскрутка сайта франция цена .
seo top 1 seo-kejsy17.ru .
mostbet humo orqali yechish mostbet humo orqali yechish
best free online doubledown casino 3x chip sale [Nannie]
new zealand, united kingdom pub pokies and united statesn casino slots online, or real money poker apps united states
seo аудит веб сайта seo аудит веб сайта .
попперс для девушки
попперс Казань
https://rentry.co/ipi6dv4x
melbet вывод элкарт кыргызстан melbet вывод элкарт кыргызстан
https://r50md7.zombeek.cz
https://site169648514.fo.team
купить дапоксетин Нижний Тагил
https://theexplorers.com/user?id=50f0371d-3cab-4c95-86c3-9ffa11bfb3b6
купить попперс в красноярске
1win download mirror https://www.1win76138.help
Статья про цены на накрутку позиций и выбор оптимального предложения. Автор рассказывает, на что обращать внимание, какие факторы влияют на стоимость и как не ошибиться с подрядчиком. Полезные рекомендации: https://spc2.ru/tseny-na-nakrutku-pozitsiy-v-poiskovyh-sistemah-kak-vybrat-optimalnoe-predlozhenie/
усиление ссылок переходами усиление ссылок переходами .
https://suvo9z.zombeek.cz
ремонт ванной комнаты ключ спб ремонт ванна ключ цена
Terrific post however I was wanting to know if you could write a litte more on this subject? Id be very grateful if you could elaborate a little bit more. Many thanks premium Barcelona escorts
https://telegra.ph/Skolko-stoit-akkaunt-v-world-of-tanks-11-19
1win akkaunt yaratish http://www.1win5768.help
mostbet восстановить пароль mostbet восстановить пароль
сиалис краснодаре доставка
попперс fist купить
из чего сделан попперс
частный seo оптимизатор частный seo оптимизатор .
https://theexplorers.com/user?id=720e4abc-cf0a-4a5d-a2b7-8298d4de3c02
sweet bonanza eliminar cuenta sweet bonanza eliminar cuenta
sweet bonanza iniciar sesión rápido sweet bonanza iniciar sesión rápido
sweet bonanza cómo retirar a paypal https://www.sweet-bonanza18364.help
https://jodmit.zombeek.cz
https://site194356084.fo.team
https://rentry.co/sgzzbri8
seo partners seo partners .
melbet рабочее зеркало melbet рабочее зеркало
https://telegra.ph/Smeshnoj-stishok-12-04
https://telegra.ph/Russkie-serialy-melodramy-spisok-luchshih-serialov-2013-2016-01-04
срочно купить виагру
препараты для продления преждевременной эякуляции