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.

18,990 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Подробнее ответы анализируются непосредственно врачом. Консультант может собрать первичные данные однако постановки диагноза и лечебной схемы по переписке недостаточно. Бесплатная телефонная или онлайн-консультация помогает выбрать направление а основное лечение назначается после осмотра. Получить больше информации – запой наркологическая клиника в Красноярске

  2. Сложная ситуация — родственник пьёт без остановки в столице Урала. Скорая отказывается — а состояние тяжёлое. Хорошо что есть решение — помощь при запое в нашем городе. Специалист уже через час по всему городу. Оборудование и препараты. Ставят капельницу — безопасно. Никто не узнает. Не завышают в Екатеринбурге. сколько стоит прокапаться https://alkogolizm.kapelnicza-ot-zapoya-ekaterinburg-vbx.ru Все условия для столицы Урала. Звонил им — без обмана. После капельницы — как новый человек. Чем раньше тем лучше. Кому надо в Екатеринбурге — сохраните номер. Всех благ

  3. Кошмар пришёл — близкий не выходит из запоя в Екатеринбурге. Скорая не приезжает — а состояние тяжелое. Узнал куда звонить — выезд нарколога на дом в нашем городе. Врачи приезжают быстро по адресу. С собой всё необходимое. Нормализуют состояние — быстро. Никто не узнает. Не завышают в регионе. капельницы от запоя купить https://alkogolizm.kapelnicza-ot-zapoya-ekaterinburg-rhm.ru Вся информация по ссылке для Екатеринбурга. Я сам вызывал — профессионалы своего дела. Организм приходит в норму. Не терпите. Кто в нашем городе — держите под рукой. Не шутите с организмом

  4. Этот обзор посвящен успешным стратегиям избавления от зависимости включая реальные примеры и советы. Мы разоблачим мифы и предоставим читателям достоверную информацию о различных подходах. Получите опыт многообразия методов и найдите подходящий способ для себя Получить полную информацию – программа реабилитации алкоголиков

  5. Проблема накрыла — близкий не выходит из состояния. Скорая не приезжает — нужна клиника в НН. Хорошо что есть клиника — лечение в клинике. Врачи круглосуточно наблюдают. Детоксикация организма — профессионально. Без лишних бумаг. Отношение внимательное. вывод из запоя стационарно https://kapelnica.vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-xft.ru На сайте подробности для нашего города. Уже пользовались — всё честно. Результат очевиден. Не тяните время. Кто в НН — советую. Держитесь

  6. Случилась беда — близкий не выходит из состояния. Таблетки не помогают — а риск растёт. Повезло найти контакты — выезд нарколога. Не заставляют ждать. С собой все препараты. Нормализуют состояние — профессионально. Никто не узнает. Стоимость приемлемая. капельница на дому от запоя https://narkolog.kapelnicza-ot-zapoya-ekaterinburg-rhm.ru Там контакты и цены. Проверил на себе — всё четко. Самочувствие супер. Не откладывайте. Сохраните номер. Здоровье — это главное

  7. На первичном приеме нарколог выясняет как долго человек пьет насколько часто возникает запой присутствует ли пивной или иной вариант хронического алкоголизма были ли попытки самостоятельно отказаться от алкоголя и применялось ли кодирование раньше. Врач уточняет наличие заболеваний сердца печени нервной системы и мозга эпизодов депрессии неврозов бессонницы или других психических расстройств. При необходимости назначаются анализы и дополнительная диагностика. Для пациента особенно важно не скрывать информацию о лекарствах и сопутствующем лечении потому что совместимость средств непосредственно влияет на безопасность процедуры. Ознакомиться с деталями – adres-kodirovaniya-ot-alkogolizma

  8. Ситуация критическая — человек в запое уже несколько недель. На дому невозможно вывести — нужна срочная госпитализация. Друзья посоветовали надёжное место. Оказывается есть профессиональная помощь. Врачи постоянно наблюдают. Капельницы и инфузии — безопасно и эффективно. Без постановки на учёт. Условия отличные. вывести из запоя в стационаре https://alkogolizm.vyvod-iz-zapoya-v-stacionare-samara13.ru Там контакты и цены. Проверили на себе — врачи высший класс. Результат виден сразу. И что важно — с реабилитацией. Чем раньше тем лучше. Каждая минута важна. Кому нужна срочная помощь — обращайтесь. Всё наладится

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

  10. Сложная ситуация — родственник пьёт без остановки в столице Урала. Скорая отказывается — а риск огромный. Хорошо что есть решение — выезд нарколога на дом в нашем городе. Врачи приезжают оперативно по Екатеринбургу. Оборудование и препараты. Ставят капельницу — безопасно. Полная анонимность. Стоимость адекватная в регионе. вызвать капельницу от запоя на дому вызвать капельницу от запоя на дому На сайте подробности для столицы Урала. Проверил на себе — без обмана. После капельницы — как новый человек. Чем раньше тем лучше. Кто на Урале — записывайте. Не шутите с организмом

  11. Срыв произошёл — близкий не выходит из запоя в Екб. Ничего не работает — а время идёт. Хорошо что есть специалисты — капельница от запоя в нашем городе. Оперативно выезжают по Екатеринбургу. Полный комплект. Очищают организм — быстро. Анонимно и конфиденциально. Всё честно в области. сколько стоит прокапаться от алкоголя цена https://alkogolizm.kapelnicza-ot-zapoya-ekaterinburg-rhm.ru Вся информация по ссылке для нашего города. Уже пользовался — без обмана. Самочувствие супер. Главное — не медлить. Кто в нашем городе — пригодится. Всех благ

  12. Врач учитывает симптомы риски анамнез и семейную ситуацию чтобы предложить подходящую программу. Узнать больше – vyvod-iz-zapoya-na-domu

  13. Срыв случился — отец совсем потерял себя. Дома уже не справиться — требуется серьёзное лечение в Нижнем Новгороде. Нашли хороший стационар — лечение в стационаре. Медперсонал на месте 24/7. Очищение крови — безопасно и эффективно. Без лишних бумаг. Условия комфортные. вывод из запоя в стационаре вывод из запоя в стационаре Там контакты и цены для нашего города. Проверили на себе — помогли реально. После лечения сразу легче. Главное — не медлить. Кто в НН — советую. Держитесь

  14. Проблема накрыла — человек в запое уже давно. На дому не помогают — требуется серьёзное лечение в НН. Узнали куда обратиться — интенсивная терапия. Врачи круглосуточно наблюдают. Инфузионная терапия — профессионально. Без лишних бумаг. Уход профессиональный. вывести из запоя в стационаре https://kapelnica.vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-xft.ru Там контакты и цены для нашего города. Уже пользовались — помогли реально. Состояние полностью нормализуется. Чем раньше тем лучше. Кому надо в Нижнем Новгороде — советую. Поправляйтесь

  15. Проблема накрыла — отец совсем слетел с катушек. Уговоры бесполезны — а риск растёт. Повезло найти контакты — выезд нарколога. Специалист через час. Капельницы и витамины. Вводят лекарства — эффективно. Никто не узнает. Всё честно. вывести из запоя капельница https://narkolog.kapelnicza-ot-zapoya-ekaterinburg-rhm.ru На сайте подробности. Уже пользовался — без обмана. Состояние нормализуется. Главное — не терпите. Кому надо — записывайте. Берегите себя

  16. Срыв случился — близкий не выходит из состояния. Таблетки бесполезны — необходима клиника в НН. Друзья порекомендовали — интенсивная терапия. Врачи круглосуточно наблюдают. Детоксикация организма — безопасно и эффективно. Без постановки на учёт. Уход профессиональный. вывод из запоя в стационаре нижний новгород https://alkogolizm.vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-elm.ru На сайте подробности для НН. Я сам лежал — врачи высший класс. Результат очевиден. Откладывать нельзя. Кто в нашем городе — советую. Поправляйтесь

  17. Случай тяжёлый — родственник на грани жизни и смерти. Дома уже ничего не помогает — нужна срочная госпитализация. Узнали куда обратиться. Можно лечь в клинику. Постоянный мониторинг. Детоксикация организма — под строгим контролем врачей. Никто не узнает. Уход профессиональный. капельница от запоя в стационаре https://alkogolizm.vyvod-iz-zapoya-v-stacionare-samara13.ru Там контакты и цены. Проверили на себе — всё честно. Результат виден сразу. И что ценно — с заботой. Действуйте сразу. Каждая минута важна. Кому нужна срочная помощь — рекомендую. Держитесь

  18. Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические физические и социальные последствия зависимого поведения а также важность своевременного обращения за помощью. Следуйте по ссылке – нарколог на дом

  19. Кошмар пришёл — родственник пьёт без остановки. Таблетки бесполезны — только стационар спасёт в НН. Узнали куда обратиться — лечение в стационаре. Медперсонал на месте 24/7. Капельницы и препараты — профессионально. Без постановки на учёт. Уход профессиональный. быстрый вывод из запоя в стационаре быстрый вывод из запоя в стационаре Вся информация по ссылке для нашего города. Родственника положили — всё честно. Результат очевиден. Главное — не медлить. Кто в области — рекомендую. Выход есть всегда

  20. Критическая ситуация — близкий совсем не выходит из состояния. На дому не справиться — нужна срочная госпитализация в столице Приволжья. Узнали куда обратиться — вывод из запоя в стационаре. Полный контроль состояния. Инфузионная терапия — профессионально. Никто не узнает. Уход профессиональный. цена на вывод из запоя в стационаре https://alkogolizm.vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-xft.ru На сайте подробности для Нижнего Новгорода. Уже пользовались — без обмана. Человек приходит в себя. Чем раньше тем лучше. Кто в нашем городе — рекомендую. Поправляйтесь

  21. Попал в переплет — с утра просто ад. Никакие таблетки не помогают — а легче ни капли. Уже слышал про это — можно быстро прийти в себя. Речь про — капельница на дому. Врач через час. С собой все препараты. Вводят лекарства — сразу легчает. И что важно — без учёта. Цены адекватные. вызвать капельницу от запоя на дому вызвать капельницу от запоя на дому Там контакты и цены. Звонил им — профессионалы своего дела. После капельницы — чувствуешь человека. Надежный вариант. Кому надо — записывайте. Лучше один раз сделать. Здоровье — это главное

  22. Отдельного внимания требуют больные с печеночной и сердечной недостаточностью тяжелым поражением нервной системы паническими атаками выраженной депрессией или агрессией. Если общее состояние резко ухудшилось появилась спутанность сознания или человек плохо реагирует на окружающих следует обратиться за экстренной медицинской помощью. Решение о месте лечения принимается с учетом диагноза тяжести абстинентного синдрома и потенциального риска осложнений. Узнать больше – kapelnica-ot-zapoya-anonimno-na-domu

  23. Беда пришла — человек в запое уже несколько дней. Таблетки не помогают — а риск растёт. Друзья подсказали — срочная помощь на месте в Питере. Специалист через час. С собой всё необходимое. Вводят лекарства — безопасно. Без постановки на учёт. Всё честно. вывод из запоя недорого санкт петербург https://detoks.vyvod-iz-zapoya-na-domu-sankt-peterburg.ru Все условия для северной столицы. Проверил на себе — всё четко. Состояние нормализуется. Не откладывайте. Кто в Санкт-Петербурге — пригодится. Всех благ

  24. Проблема — близкий в запое уже давно. Дома не справиться — нужно серьёзное лечение. Друзья порекомендовали. Можно лечь в клинику. Постоянный контроль. Очищение организма — профессионально. Полная анонимность. Уход профессиональный. прокапаться в стационаре https://narkolog.vyvod-iz-zapoya-v-stacionare-samara12.ru Там контакты и цены. Я сам лежал — реально помогли. После лечения сразу легче. И что ценно — с заботой. Главное — не медлить. Время не ждёт. Кто ищет стационар — советую. Поправляйтесь

  25. Случился срыв — знакомый совсем спился в нашем городе. Скорая отказывается — а риск огромный. Хорошо что есть решение — капельница от запоя в Екб. Врачи приезжают оперативно по Екатеринбургу. Капельницы и растворы. Ставят капельницу — безопасно. Анонимно и конфиденциально. Всё честно в регионе. капельница от запоя стоимость https://alkogolizm.kapelnicza-ot-zapoya-ekaterinburg-vbx.ru Все условия для Екб. Уже пользовался — профессионалы своего дела. После капельницы — как новый человек. Главное — не медлить. Кому надо в Екатеринбурге — держите под рукой. Всех благ

  26. Кошмар — человек в запое уже больше недели в Екб. Ничего не помогает — а риск огромный. Друзья подсказали — срочная детоксикация в Екб. Врачи приезжают оперативно по Екатеринбургу. Капельницы и растворы. Ставят капельницу — безопасно. Полная анонимность. Всё честно в Екатеринбурге. вызвать капельницу от запоя на дому вызвать капельницу от запоя на дому Все условия для Екатеринбурга. Звонил им — всё четко. Самочувствие супер. Не откладывайте. Кто на Урале — держите под рукой. Всех благ

  27. Срыв произошёл — человек в запое уже несколько дней в столице Урала. Уговоры бесполезны — а состояние тяжелое. Друзья порекомендовали — срочная детоксикация в Екб. Оперативно выезжают по Екатеринбургу. Оборудование и препараты. Очищают организм — быстро. Без постановки на учёт. Не завышают в нашем городе. сколько стоит прокапаться от алкоголя https://alkogolizm.kapelnicza-ot-zapoya-ekaterinburg-rhm.ru Там контакты и цены для Екатеринбурга. Проверил на себе — помогли быстро. Самочувствие супер. Чем раньше тем лучше. Кому надо в Екатеринбурге — держите под рукой. Берегите себя

  28. new united statesn no deposit bonus casino 2021, play real money poker online australia and
    $5 deposit online casino canada, or free bonus schenectady casino open (Rubin) uk

  29. Кошмар — отец совсем потерял контроль. На дому не помогают — требуется серьёзное лечение в НН. Нашли хороший стационар — интенсивная терапия. Врачи круглосуточно наблюдают. Капельницы и препараты — надёжно. Никто не узнает. Уход профессиональный. вывод запоя телефон вывод запоя телефон Там контакты и цены для столицы Приволжья. Родственника положили — помогли реально. Результат очевиден. Не тяните время. Кто в НН — советую. Поправляйтесь

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>