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://teletype.link/transformkck621
https://telegra.ph/Uilyam-i-kejt-03-02
https://paiza.io/projects/Zwdt_2eEZmW6F6yrBn4NZQ
https://paiza.io/projects/IcqvPVV8u_3ha5Ths-SWkQ
https://xefoxc.zombeek.cz
https://paiza.io/projects/Mq3GPofLgT2OU4mRg6FWUg
https://rentry.co/85q83hpg
beste mls wettanbieter
Check out my webpage :: buchmacher bonus ohne einzahlung (Leandro)
купить попперс Саранск
https://telegra.ph/Kupit-super-viagra-Balashiha-01-28
глубокий комлексный аудит сайта глубокий комлексный аудит сайта .
https://site601281927.fo.team
online sportwetten geld zurück
my web site nba basketball wett-tipps (https://basketball-wetten.com)
оптимизация и seo продвижение сайтов москва оптимизация и seo продвижение сайтов москва .
https://rentry.co/8z8872ee
https://site369662510.fo.team
раскрутка сайта франция цена раскрутка сайта франция цена .
https://site620486339.fo.team
https://telegra.ph/Kak-pisat-formuly-v-vorde-02-06
https://z1m9mh.zombeek.cz
поисковое seo в москве prodvizhenie-sajtov-v-moskve17.ru .
ева в виагре
https://teletype.link/superintendentswl674
https://telegra.ph/Bedil-kismi-3-03-09
wetten bonus code ohne einzahlung
Here is my site … wett tipp ai erfahrungen
https://telegra.ph/Kvest-rum-perm-11-09
качественные таблетки для эрекции
https://snippet.host/taohhg
https://www.bitsdujour.com/profiles/WJ6UMt
beste sportwetten seiten
my web site: online wetten ohne oasis
куплю виагру в йошкар
износ под попперсом
попперс Чита
заказать курсовую заказать курсовую .
https://snippet.host/pwicsc
попперс что это отзывы
https://telegra.ph/Grimm-bratya-11-09
https://zjitj0.zombeek.cz
К у р г а н
попперс фистинг порно
попперсы побочный эффект
https://site719502700.fo.team
формы таблеток сиалис
https://telegra.ph/Oleg-vinnik-klipy-11-20
super p-forse
sportwetten anbieter bonus
Also visit my webpage … Online Wettanbieter Paypal
seo агентство seo агентство .
https://telegra.ph/Kak-podklyuchit-modem-k-kompyuteru-02-23