Integration testing transactions and optimistic locking with Spring and JUnit

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.

22,049 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Когда ты видишь как твой близкий человек буквально угасает на глазах и ничего не можешь с этим сделать — это страшнее любой физической боли. Так было с моим отцом — он пил всё больше и больше пока мы не перестали узнавать его. Он перестал выходить из дома забросил любимое хобби перестал разговаривать с нами по душам. Мы жили в постоянном страхе: что будет завтра?. Мы перепробовали всё что только могли придумать — и кодирование и народные средства и уговоры. Но алкоголь каждый раз оказывался сильнее и мы снова скатывались на дно. В какой-то момент мы поняли что нужно что-то менять кардинально. И мы нашли решение — стационар где отцу могли бы помочь профессионалы. круглосуточное лечение в клинике — это был наш последний шанс который сработал. Его положили в палату где за ним наблюдали 24 часа в сутки. Врачи провели полную детоксикацию организма назначили курс психотерапии. Он начал посещать групповые занятия где общался с другими пациентами переживающими то же самое. Мы видели как он меняется день ото дня и это давало нам надежду. Через месяц он вышел из клиники — трезвым осознанным с новыми планами на жизнь. Теперь он снова работает общается с внуками улыбается а мы наконец-то перестали бояться за его жизнь. Вся процедура прошла анонимно — никаких учётов никаких отметок в карте никаких лишних вопросов от соседей или коллег. Цена оказалась абсолютно оправданной — мы заплатили за результат а не за обещания. Никаких скрытых платежей всё честно и по-человечески. наркология москва стационар наркология москва стационар По ссылке — условия госпитализации и стоимость для Москвы. Если ваша семья столкнулась с похожей бедой — не опускайте руки. Профессиональная помощь существует и она действительно работает. Не бойтесь сделать этот шаг — он может вернуть вам близкого человека. Удачи вам и вашему родному человеку на пути к выздоровлению

  2. Выездной формат позволяет избежать контактов с другими пациентами в клинике и очистить организм в привычной обстановке. Специалисты самостоятельно привозят весь необходимый набор медикаментов и расходных материалов. Детальнее – https://narkologicheskaya-klinika-ekaterinburg0.ru/chastnaya-narkologicheskaya-klinika-v-ekb/

  3. Мы просто не узнавали его. Перестал есть пить умываться. А он не мог даже встать с кровати. Позвонил объяснил ситуацию. Нарколог на дом — это был звонок который спас брата. Поставил капельницу и начал инфузию. Врач оставил свои контакты и уехал. Всё прошло анонимно без учётов. Всё честно и прозрачно. Мы снова вместе. вызов наркологической помощи на дом вызов наркологической помощи на дом Сохраните поделитесь не потеряйте для районов. Каждый день промедления — это риск. Вы не одни

  4. И ты понимаешь что спасти его можешь только ты. Мой муж стал пить после сокращения на работе. Он не мог говорить связно. В государственной больнице сказали: «Везите на скорой». Я нашла номер в интернете. Нарколог на дом — который дал нам второй шанс. Убрал интоксикацию и восстановил сердечный ритм. И уехал так же тихо как приехал. Никто из родственников даже не узнал. Цену сказали по телефону без сюрпризов. Он бросил пить и начал заниматься спортом. вызов нарколога на дом https://alkogolizm.narkolog-na-dom-moskva-zqe.ru Сохраните поделитесь не потеряйте для районов. Если вы сейчас в такой же ситуации — не ждите. Всё наладится

  5. Когда встал вопрос о ремонте цеха — вот тут и начались поиски решения. Нужно было что-то серьёзное долговечное и без лишней пыли. В итоге понял: лучшее решение для промышленных помещений — монолитное бетонное основание. Чтобы пол выдерживал нагрузки и не трескался. Ребята приехали замерили просчитали. Погрузчики ездят — и никаких сколов. Сэкономите нервы и деньги. бетонные промышленные полы Минск https://prom-poly.by/betonnye-promyshlennye-poly/ Сохраните пригодится для Беларуси. Делайте правильный пол с первого раза — и забудьте о проблемах на годы

  6. Алкоголь забрал его за пару месяцев. Он пил каждый день с утра до вечера. Мы обращались в больницы но везде отказывали. В отчаянии я нашёл в интернете контакты врача срочная анонимная помощь — который вернул его к жизни. Через пару часов отец открыл глаза и улыбнулся. Сказал что если что — звонить в любое время. Только мы врач и отец. Никаких сюрпризов и скрытых платежей. И я знаю что это благодаря тому врачу. нарколог на дом москва https://kapelnica.narkolog-na-dom-moskva-tfb.ru По ссылке — подробная информация для нашего города. Звоните не бойтесь. Всё наладится

  7. Каждый из нас надеется что беда обойдёт стороной. Он просто перестал быть собой. Мы сидели и смотрели как он угасает. Позвонил объяснил ситуацию. вызов на дом круглосуточно — который дал нам надежду. Поставил капельницу и начал лечение. Врач оставил рекомендации и уехал. Никаких справок и бумаг. Никаких сюрпризов и скрытых платежей. Сейчас брат не пьёт уже 4 месяца. нарколог на дом анонимно нарколог на дом анонимно Там все контакты и условия для нашего города. Помощь рядом она реальная. Берегите себя и близких

  8. А я просто не знала как вернуть его обратно. Мы перепробовали всё что могли. Где он будет под контролем профессионалов. Я начала искать клинику и наткнулась на стационар в Москве. лечение в стационаре от алкоголизма — то что спасло нашу семью. Врачи контролировали его состояние 24/7. Он стал спокойнее начал говорить улыбаться. Только лечение и результат. Мы заплатили за месяц лечения. И я знаю что это благодаря стационару. наркологический стационар наркологический стационар Это может пригодиться в трудный момент для области. Промедление может стоить слишком дорого. Доверьтесь профессионалам — они знают что делать

  9. Алкоголизм — это болезнь которая не щадит никого. Но очень быстро переросло в зависимость. Мы поняли: нужна профессиональная помощь. Читали отзывы звонили сравнивали условия. лечение алкоголизма в клинике — это было лучшее решение которое мы приняли. Она работала с психологом каждый день. Нашла новую работу восстановила отношения с детьми. Никаких учётов и справок. Никаких скрытых платежей. И я знаю что это благодаря клинике. наркологическая клиника санкт-петербург https://alkogolizm.narkologicheskaya-klinika-sankt-peterburg14.ru По ссылке — подробная информация для северной столицы. Промедление может стоить слишком дорого. Путь к выздоровлению начинается с первого шага — сделайте его сегодня

  10. Этот список — памятка на холодильник. Он не раскрывает диагноз но точно описывает поводы для связи с дежурным врачом. Своевременная эскалация — часть безопасности а не «подстраховка». Если сомневаетесь — лучше позвонить. Исследовать вопрос подробнее – капельница от запоя стоимость

  11. Когда нужно было обновить покрытие на складе — вот тут и начались поиски решения. Деревянные полы — не вариант для погрузчиков. Я перечитал кучу статей посмотрел видео. Чтобы пол выдерживал нагрузки и не трескался. Нашёл подрядчика в нашем регионе который специализируется на таких работах. Теперь пол ровный прочный не пылит. Сэкономите нервы и деньги. бетонные промышленные полы цена за м2 бетонные промышленные полы цена за м2 Сохраните пригодится для Минска. Делайте правильный пол с первого раза — и забудьте о проблемах на годы

  12. Когда ты видишь как твой близкий человек буквально угасает на глазах и ничего не можешь с этим сделать — это страшнее любой физической боли. Так было с моим отцом — он пил всё больше и больше пока мы не перестали узнавать его. Он перестал выходить из дома забросил любимое хобби перестал разговаривать с нами по душам. Мы жили в постоянном страхе: что будет завтра?. Мы перепробовали всё что только могли придумать — и кодирование и народные средства и уговоры. Но алкоголь каждый раз оказывался сильнее и мы снова скатывались на дно. В какой-то момент мы поняли что нужно что-то менять кардинально. И мы нашли решение — стационар где отцу могли бы помочь профессионалы. Наркологический стационар — это то что вернуло отца к нормальной жизни. Его положили в палату где за ним наблюдали 24 часа в сутки. Врачи провели полную детоксикацию организма назначили курс психотерапии. Он начал посещать групповые занятия где общался с другими пациентами переживающими то же самое. Мы видели как он меняется день ото дня и это давало нам надежду. Через месяц он вышел из клиники — трезвым осознанным с новыми планами на жизнь. Теперь он снова работает общается с внуками улыбается а мы наконец-то перестали бояться за его жизнь. Вся процедура прошла анонимно — никаких учётов никаких отметок в карте никаких лишних вопросов от соседей или коллег. Цена оказалась абсолютно оправданной — мы заплатили за результат а не за обещания. Никаких скрытых платежей всё честно и по-человечески. стоимость пребывания в платном стационаре https://alkogolizm.narkologicheskij-staczionar-moskva-eby.ru По ссылке — условия госпитализации и стоимость для нашего города. Если ваша семья столкнулась с похожей бедой — не опускайте руки. Профессиональная помощь существует и она действительно работает. Не бойтесь сделать этот шаг — он может вернуть вам близкого человека. Удачи вам и вашему родному человеку на пути к выздоровлению

  13. Мы все надеемся что беда обойдёт нас стороной. Он пил уже больше двух недель. Но он не мог встать с кровати. Но на том конце провода меня просто выслушали и сказали: «Приедем через час». анонимная помощь круглосуточно — это был тот самый случай когда телефонный звонок меняет всё. Убрал интоксикацию нормализовал пульс. Брат начал медленно восстанавливаться. Мы расплатились и он уехал так же тихо как и приехал. Цену назвали сразу без скрытых комиссий. Я знаю что если бы не этот вызов я мог бы потерять его навсегда. выезд нарколога на дом круглосуточно выезд нарколога на дом круглосуточно Там все контакты и условия для области. Звоните не бойтесь. Берегите себя и близких

  14. Когда запой затягивается а человек теряет контроль над собой. Мы не могли достучаться до него. Мы пытались лечить его дома — но безрезультатно. И нашли место где врачи действительно знают своё дело. платная госпитализация в Москве — это было лучшим решением которое мы приняли. Он проходил реабилитацию каждый день. Через месяц он уже выглядел по-другому. Никаких учётов и справок. Цена оказалась адекватной особенно по сравнению с тем что мы могли потерять. Сегодня брат работает общается с детьми. стационар наркологический москва https://zapoy.narkologicheskij-staczionar-moskva-qtx.ru По ссылке — подробная информация о стационаре для области. Если вы столкнулись с похожей ситуацией — не ждите. Сделайте шаг к спасению близкого человека

  15. Но алкоголь оказался сильнее и мой брат просто ушёл в запой. Мы не узнавали его — он стал агрессивным апатичным. Где не просто «кодируют» а лечат комплексно. круглосуточный стационар в Санкт-Петербурге — это было то что нам было нужно. Назначили капельницы психотерапию групповые занятия. Это было настоящее чудо. Никаких справок и отметок в карте. Никаких скрытых платежей. Он работает общается с нами строит планы. лечение алкоголизма в санкт-петербурге https://zapoy.narkologicheskaya-klinika-sankt-peterburg14.ru По ссылке — подробная информация для северной столицы. Если вы столкнулись с похожей ситуацией — не ждите. Начните путь к выздоровлению уже сегодня — ваш близкий заслуживает второго шанса

  16. Ситуация была аховая. Мне ответили: «Выезжаем через час». Поставил капельницу. срочная детоксикация — это спасло человека. Всё честно и без обмана. вызвать вывод из запоя https://vyvod-iz-zapoya-v-moskve-rwt.ru Сохраните поделитесь не потеряйте для нашего города. Звоните помогайте спасайте. Вывод из запоя — это реальность и она работает

  17. Он стал чужим человеком. Он не выходил из комнаты не разговаривал. Звонили в наркологические диспансеры в частные клиники. Мне сказали: «Приедем через час». выезд врача-нарколога в Москве — который дал нам надежду. Врач приехал через час осмотрел брата. Я не мог поверить своим глазам. Никаких справок и бумаг. Никаких сюрпризов и скрытых платежей. Мы снова вместе. врач нарколог на дом врач нарколог на дом По ссылке — подробная информация для области. Помощь рядом она реальная. Вы не одни

  18. Но алкоголь забирал его день за днём и мы теряли надежду. А потом просто ушёл в запой и перестал выходить из дома. Там нас выслушали и предложили реальную помощь. Наркологическая клиника — это было то что мы так долго искали. Он работал с психологом посещал групповые занятия. Он снова начал работать общаться с нами улыбаться. И это помогло сохранить его репутацию и достоинство. Мы заплатили за курс который длился два месяца. Он работает общается с нами строит планы на будущее. наркологическая клиника наркологическая клиника По ссылке — подробная информация для северной столицы. Звоните узнавайте действуйте. Сделайте первый шаг к выздоровлению уже сегодня — он может изменить всё

  19. Он потерял работу семью здоровье. Но ничего не помогало. Это было единственное что реально сработало. профессиональная реабилитация — здесь он научился жить без зависимости. Сейчас он работает общается с семьёй строит планы. реабилитационный центр для наркозависимых https://zapoy.reabilitaczionnyj-czentr-nizhniy-novgorod.ru Сохраните поделитесь не потеряйте для области. Промедление может стоить слишком дорого. Помощь есть и она рядом

  20. Но когда она приходит мир рушится. Это случилось внезапно — после увольнения с работы. Но он не мог встать с кровати. И тогда я решил действовать. выезд врача-нарколога в Москве — который вернул его к жизни. Через пару часов он открыл глаза и заговорил. Я не мог поверить своим глазам. Всё прошло анонимно без учётов. Цену сказали сразу по телефону. Сейчас брат не пьёт уже 4 месяца. вызов нарколога на дом круглосуточно вызов нарколога на дом круглосуточно Сохраните поделитесь не потеряйте для области. Если вы сейчас в такой же ситуации — не ждите. Вы не одни

  21. Когда встал вопрос о ремонте цеха — вот тут и начались поиски решения. Нужно было что-то серьёзное долговечное и без лишней пыли. В итоге понял: лучшее решение для промышленных помещений — заливка пола под ключ. Изучил технологию посмотрел на этапы. Нашёл подрядчика в нашем регионе который специализируется на таких работах. Сделали быстро качественно без срывов. Рекомендую всем кто ищет надёжный промышленный пол. бетонные промышленные полы Минск https://prom-poly.by/betonnye-promyshlennye-poly/ По ссылке — подробнее о технологии для Беларуси. Делайте правильный пол с первого раза — и забудьте о проблемах на годы

  22. Но реальность была страшнее любого кошмара. А затем просто ушёл в запой. Просто лежал и смотрел в одну точку. Но никто не мог нам помочь. Врач приехал через час. выезд врача-нарколога в Москве — это был тот самый звонок который спас мужа. Через несколько часов он открыл глаза и попросил воды. Оставил свой номер и сказал: «Звоните в любое время». Никаких учётов и записей. Никаких скрытых платежей. Мы начали ходить в кино и гулять по вечерам. анонимный вызов врача нарколога на дом анонимный вызов врача нарколога на дом По ссылке — подробная информация для нашего города. Помощь рядом она реальная. Берегите себя и близких

  23. Когда ты видишь как он разрушает себя и не можешь остановить — единственный выход — профессиональная помощь. Он потерял работу друзей смысл жизни. Пока кто-то из знакомых не посоветовал реабилитационный центр в Нижнем Новгороде. Честно говоря мы уже не верили что это поможет. Реабилитационный центр для наркозависимых — здесь учат жить без зависимости работать с психологами находить новые смыслы. Он работал с психологами ходил на групповые занятия учился жить трезво. Мы благодарны врачам и персоналу за их труд. центр реабилитации наркозависимых нижний новгород https://reabilitaczionnyj-czentr-nizhniy-novgorod.ru Там все контакты и условия для нашего города. Если вы столкнулись с зависимостью в своей семье — не бойтесь обращаться за помощью. Первый шаг к выздоровлению — признать проблему и обратиться к профессионалам

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>