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://rentry.co/zf2vgf7q
sportwetten tipps wochenende
Also visit my webpage: basketball wetten handicap (Miguel)
https://magazin.orgsoft.ru/forum/user/50501/
дилдо попперс тренинг
https://www.diggerslist.com/aliciagreen/about
https://telegra.ph/Smotret-film-brigada-3-otcy-i-deti-2016-02-06
http://ucglossa.ru/forum/profile.php?mode=viewprofile&u=667977
https://ckerdu.zombeek.cz
https://www.sportchap.ru/user/Michaelyod/
http://pcbspeed.com/dis/home.php?mod=space&uid=323248
дженерики почтой
https://magazin.orgsoft.ru/forum/user/50440/
wollen wir wetten gewinner
Take a look at my blog post buchmacher sportwetten (Anneliese)
https://telegra.ph/Odinnadcat-molnij-tolko-vpered-01-06
износ под попперсом
http://www.thbattle.net/space-uid-551767.html
http://lsdsng.com/user/357333
сиалис можно ли принимать девушкам
попперс Томск
https://magazin.orgsoft.ru/forum/user/50467/
https://www.40billion.com/profile/78128689
https://paiza.io/projects/-lNum7LzyaWgKMewMsonQA
https://magazin.orgsoft.ru/forum/user/50522/
https://www.sportchap.ru/user/Michaelkof/
https://telegra.ph/Irina-shamolina-blog-11-13
купить тадалафил Березники
https://bandcamp.com/aliciagreen
http://mega66.free.fr/upload/member.php?u=179317
https://telegra.ph/Kupit-viagru-v-apteke-sochi-01-18
ergebnisse öSterreichische sportwetten Gmbh
https://magazin.orgsoft.ru/forum/user/50517/
какой попперс самый мощный
http://freestyler.ws/user/630236/aliciagreen
https://teletype.link/modifyail07
https://onlinevetjobs.com/author/aliciagreen/
купить сиалис аптека столички
http://ucglossa.ru/forum/profile.php?mode=viewprofile&u=709516
Шоурумы Москвы предлагают удобный формат записи через социальные сети или мессенджеры что делает взаимодействие с брендом быстрым и простым. Современные технологии дополняют персональный сервис. Узнать больше можно по ссылке – https://forextema.com/index.php?option=com_easyblog&view=entry&id=14407&Itemid=75
https://telegra.ph/Trah-ot-pervogo-lica-11-10
https://forum.web.ru/memberlist.php?mode=viewprofile&u=83919
https://snippet.host/osiveq
http://lsdsng.com/user/357316
https://magazin.orgsoft.ru/forum/user/50464/
https://teletype.link/cornershlu7380
https://selficlub.com/aliciagreen
https://telegra.ph/Gta-san-andreas-hileleri-11-14
http://www.globalvision2000.com/forum/member.php?action=profile&uid=677727
https://cozyxj.zombeek.cz
https://magazin.orgsoft.ru/forum/user/50505/
https://magazin.orgsoft.ru/forum/user/50509/