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,978 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Критическая ситуация — близкий не выходит из состояния. Таблетки бесполезны — требуется серьёзное лечение в Нижнем Новгороде. Нашли хороший стационар — помощь в клинике. Круглосуточный мониторинг. Инфузионная терапия — безопасно и эффективно. Без постановки на учёт. Уход профессиональный. быстрый вывод из запоя в стационаре быстрый вывод из запоя в стационаре Там контакты и цены для Нижнего Новгорода. Уже пользовались — врачи высший класс. Состояние полностью нормализуется. Главное — не медлить. Кто в области — обращайтесь. Выход есть всегда

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

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

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

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

  6. united statesn roulette online fast, are there any legal online
    poker sites in australia and united kingdom online pokies 2021, or dragon link online pokies canada

    my homepage :: gardena casino

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

  8. Вывод из запоя представляет первый этап более длительного пути к трезвости. Детоксикация помогает уменьшить последствия интоксикации но не устраняет причины алкоголизма. Поэтому после стабилизации доктор обсуждает с пациентом лечение зависимости психотерапию кодирование реабилитацию и профилактику срыва. Комплексный подход особенно важен для людей которые много лет страдают алкоголизмом сталкиваются с повторением запойных эпизодов и уже не раз пытались справиться самостоятельно. Подробнее – vyvod-iz-alkogolnogo-zapoya

  9. Обратиться за помощью можно в тот момент когда проблема только начала формироваться или после многолетнего алкоголизма. Хотя родственникам нередко хотелось бы решить дело одним уколом или капельницей устойчивый результат обычно требует последовательной работы. Медицинское лечение помогает безопасно пройти начальный этап психотерапевтическую поддержку используют для работы с причинами зависимости а реабилитация направлена на возвращение к трезвой жизни семье работе и привычным обязанностям. Если человек не способен самостоятельно остановиться и продолжает пить специалист объяснит родным какие способы помощи доступны и когда действительно необходима госпитализация. Получить больше информации – наркологическая клиника цены Кемерово

  10. Индивидуальный план формируется после первичной оценки. В него могут входить медикаментозное лечение инфузионная терапия психотерапия консультации психолога кодирование от алкоголизма и реабилитационный курс. Используем современные методы которые позволяют учитывать не только разновидность зависимости но и характер заболевания мотивацию семейную ситуацию и опыт предыдущего лечения. Если человек уже проходил лечение но столкнулся со срывом программа корректируется с учетом причин рецидивов. Подробнее – https://1.narkologicheskaya-klinika-moskva11.ru/

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

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

  13. Беда пришла — близкий не выходит из состояния. Скорая не приезжает — а состояние ухудшается. Узнал куда звонить — выезд нарколога. Врачи приезжают быстро. С собой все препараты. Ставят капельницу — профессионально. Никто не узнает. Цены адекватные. капельницы на дому екатеринбург капельницы на дому екатеринбург Там контакты и цены. Я сам вызывал — профессионалы. Самочувствие супер. Главное — не терпите. Сохраните номер. Не шутите с организмом

  14. Shifting homes — quite the challenge. Went through it recently not so many months back and Ill be straight with you its a beast. You grab a box or two then the pile just grows. Everyones got an opinion but I dug in myself. Anyway: if youre after movers in nevada do some comparing. Look at it this way: local nevada movers have the know-how — especially across state lines. What worked for me — scoured ratings online — and take this to heart it was the best investment of time. This ones worth your time that brought everything into focus. southern nevada movers https://movers-in-nevada-uwq.com That list over there gave me clear direction. Transparent pricing — totally above board. Got my move scheduled there and they were absolutely solid. Dont brush anything off. Find out about equipment. Quality moving services pay off big time. Hope you have a smooth move

  15. Вывод из запоя в Красноярске — востребованная наркологическая помощь при продолжительном приеме алкоголя тяжелом похмелье и абстинентном синдроме. Специалисты помогают прервать запой уменьшить последствия интоксикации поддержать работу печени сердца головного мозга и нервной системы. В зависимости от тяжести нарушения помощь нарколога оказывается на дому или в клинике. Перед началом лечения оцениваются самочувствие длительность запойного периода стаж алкоголизма хронические болезни и лекарства которые принимает обратившийся. Ознакомиться с деталями – наркологический вывод из запоя в Красноярске

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

  17. Специалисты регулярно помогают при интоксикации запоях абстиненции и сложных состояниях зависимости. Дополнительная информация – вывод из запоя в Красноярске

  18. С пациентом работают профильные специалисты которые оценивают состояние и подбирают безопасный план помощи. Изучить вопрос подробнее – narkologicheskaya-klinika-telefon

  19. Беда — отец пьёт. Скорая не вариант — нужно серьёзное лечение. Хорошо что есть хорошая клиника. Оказывается работает профессиональный стационар. Постоянный контроль. Очищение организма — безопасно и эффективно. Полная анонимность. Палаты хорошие. выведение из запоя стационар выведение из запоя стационар Там контакты и цены. Проверили на себе — всё честно. Человек приходит в себя. И что важно — с реабилитацией. Чем раньше тем лучше. Близких нужно спасать. Кто ищет стационар — рекомендую. Поправляйтесь

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>