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.

21,162 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Что ты потерял близкого человека навсегда. Он просто перестал быть собой. Мы были в отчаянии. Одна знакомая дала мне телефон. выездная детоксикация. Через 2 часа он открыл глаза. Он был слаб но он был жив. Просто помощь и ничего больше. Никаких сюрпризов. Спасибо тем кто не отказал. капельница от запоя цена https://detoks.kapelnicza-ot-zapoya-voronezh.ru По ссылке — подробности для районов. Всё обязательно наладится. Выход есть

  2. Ситуация была критическая. Его тошнило он не мог говорить. Мы были в полном отчаянии. Одноклассник в соцсетях — посоветовал позвонить сюда. капельница от запоя — сомневались до последнего. Просто сделал свою работу. Осмотрел поставил капельницу. Когда сказал: «Всё я больше не буду». Врач даже не спросил имя. Цена была объявлена до выезда. Работает встречается с внуками. вызов нарколога на дом вывод из запоя вызов нарколога на дом вывод из запоя Сохраните пока есть время для Самары. Пока человек ещё жив — звоните. Всё будет хорошо

  3. Каждый день был хуже предыдущего. Думали он не доживёт до утра. «Везите в наркологию» — сказали они. Знакомый посоветовал — помощь на дому в Екатеринбурге. Без лишних вопросов. Восстановил водный баланс. Мы плакали от счастья. Никакого учёта в диспансере. Сказали до выезда. Ходит на рыбалку помогает внукам. поставить капельницу от похмелья поставить капельницу от похмелья Там все телефоны и прайс для нашего города. Помощь реальная она рядом. Не сдавайтесь

  4. Кажется что это никогда не закончится. Мой брат пил уже неделю Кто-то сказал что есть врачи на дом. срочная помощь в Воронеже — то что спасло его. Через 2 часа он уже пил чай. Никто не узнал. Цена — названа заранее. Теперь он не пьёт. снять похмелье капельницей https://alkogolizm.kapelnicza-ot-zapoya-voronezh.ru Сохраните не потеряйте для области. Звоните сейчас

  5. Пишу это не для рекламы а чтобы предупредить. В нашей семье случился настоящий кошмар. Мы были в полной изоляции. Одна знакомая дала телефон. детоксикация на дому — и это работает. Просто приехал и помог. Снял интоксикацию за несколько часов. Когда сказал: «Мама прости». Никаких учётов и справок. Деньги — честные без обмана. И это главное. цена вывод из запоя на дому https://alkogolizm.vyvod-iz-zapoya-na-domu-samara-nxc.ru Заходите сохраняйте не теряйте для нашего города. Главное — сделать первый шаг. Всё обязательно наладится

  6. Все попытки помочь проваливались. Глаза мутные руки дрожат. Врачи скорой только развели руками. То что действительно помогло — детоксикация в Самаре. Не спрашивал лишнего. Убрал тремор тошноту. Всё анонимно без огласки. Мы заплатили после результата. Ходит на работу общается с детьми. капельницы от запоя на дому цена https://zapoy.kapelnicza-ot-pokhmelya-ekaterinburg-sdj.ru Пригодится если случится беда для Екатеринбурга. Каждый день промедления — риск. Всё будет хорошо

  7. В жизни бывают моменты когда опускаются руки. Именно так мы чувствовали себя когда брат ушёл в запой. Искали помощи везде — которая действительно спасает. капельница от запоя — это оказалось проще чем мы думали. Сразу взялся за дело. Снял интоксикацию. Глаза засветились жизнью. Анонимно и конфиденциально. Никаких скрытых комиссий. Этот номер всегда в телефоне. цены на вывод из запоя на дому https://kapelnica.vyvod-iz-zapoya-na-domu-samara-rtw.ru По ссылке — полная информация для области. Помощь рядом нужно только позвонить. Выход есть

  8. Но лучше предупредить чем потом жалеть. Он не вставал не ел не говорил. Коллега на работе дал номер — срочная детоксикация. Сразу принял вызов. Через 3 часа он уже сидел. Без учёта в наркодиспансере. Никаких доплат. Спасибо этим врачам. снятие интоксикации на дому снятие интоксикации на дому Пригодится если случится беда для нашего города. Всё обязательно наладится. Выход есть всегда

  9. Никогда не думал что окажусь в такой ситуации. Он пил каждый день утром и вечером. Таблетки не давали эффекта. Подруга дала телефон — капельница от похмелья. Принял вызов без выходных. Снял интоксикацию. Через 2 часа он уже пил чай. Без справок и записей в карте. Без скрытых комиссий. Спасибо врачам которые не отказали. капельница на дом от похмелья капельница на дом от похмелья Пригодится если случится беда для области. Каждый день промедления — это риск. Вы не одни

  10. Но жизнь — непредсказуемая штука. Но с каждым днём становилось только хуже. Он не узнавал родных. Скорая сказала: «Это не к нам». Позвонили и не пожалели — срочная детоксикация в Екатеринбурге. Сразу понял что делать. Вернул дыхание и пульс. Через 2 часа брат сел на кровати. Всё прошло анонимно без учёта. Честнее не бывает. Спасибо врачам которые не отказали. капельница от похмелья цена https://zapoy.kapelnicza-ot-pokhmelya-ekaterinburg-fuj.ru Сохраните не потеряйте для нашего города. Если вы сейчас в такой же ситуации — не откладывайте. Берегите себя и близких

  11. Когда каждый день превратился в борьбу за его жизнь. Когда ситуация выходит из-под контроля. Мы долго искали куда обратиться. Наркологическая клиника в районах. Здесь врачи знают своё дело. Комплексный подход а не просто «зашить» или поставить капельницу. Никаких учётов и справок. Палаты — чистые и уютные. Гибкая система оплаты. Мы выбрали их и не пожалели. клиника нео клиника нео Заходите читайте сохраняйте для области. Позвоните спросите приезжайте. Вы справитесь

  12. Я никогда не думал что окажусь в такой ситуации. Мы просто смотрели как он угасает. Знакомые советовали но всё было бесполезно. Позвонил даже не веря в успех выезд врача-нарколога — это было реальное спасение. Мы плакали от счастья. Никаких учётов и справок. Никаких сюрпризов. Я знаю что есть люди которые спасают. нарколога на дом https://zapoy.narkolog-na-dom-moskva-qwe.ru Пригодится если случится беда для нашего города. Помощь рядом она реальная. Всё наладится

  13. Когда кажется что хуже уже не будет. Он пил уже 12 дней. Но он не мог даже сидеть. Коллега по работе — выезд нарколога в Воронеже. Врач приехал через 50 минут. Просто помощь и ничего лишнего. И это было честно. Спасибо тем кто не отказал. капельница от алкоголя на дому цена https://narkolog.kapelnicza-ot-zapoya-voronezh.ru По ссылке — подробности для нашего города. Если сейчас вы в такой же ситуации — не теряйте времени

  14. Когда близкий человек умирает на глазах. Он всегда был сильным весёлым. Мы просто ждали когда он умрёт. Позвонила и решилась — нарколог на дом. Без выходных и праздников. Снял интоксикацию. Мы обнимали друг друга. Никто не узнал о случившемся. Цена — названа заранее. И это — самое главное. вывод из запоя на дому круглосуточно вывод из запоя на дому круглосуточно Сохраните поделитесь не потеряйте для нашего города. Если вы сейчас в такой же ситуации — не ждите. Всё наладится

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

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

  17. Бывают моменты когда привычный мир рушится. Мы просто смотрели как он угасает. Ходили по врачам читали форумы. Что действительно приносит результат. центр лечения зависимостей в Екатеринбурге. Помогают выйти из запоя без срывов. Капельницы психотерапия группы поддержки. Полная анонимность. Еда — нормальная как дома. Стоимость — адекватная. Брат лежал месяц. наркологическая помощь клиника https://alkogolizm.narkologicheskaya-klinika-v-ekb16.ru Это может спасти жизнь для нашего города. Выход есть и он рядом. Вы справитесь

  18. Случилось то чего я боялся всю жизнь. Глаза мутные руки дрожат. Врачи скорой только развели руками. Единственное что нас спасло — срочный выезд нарколога. Принял вызов сразу. Осмотрел поставил капельницу. Никто не узнал о случившемся. Мы заплатили после результата. Вот уже месяц он не пьёт. выход из запоя на дому https://alkogolizm.vyvod-iz-zapoya-na-domu-samara-rtw.ru По ссылке — подробная информация для Самары. Звоните спрашивайте решайтесь. Главное — не молчать

  19. Но если это спасёт хоть одного человека — буду считать что не зря. Всё случилось внезапно. Мы боялись оставлять его одного. Но он не мог идти — он лежал. Посоветовали на работе — капельница от запоя. Принял вызов сразу. Осмотрел поставил капельницу. Через несколько часов он уже сидел и пил чай. Анонимно без учёта. Оплата после процедуры. Работает улыбается живёт. вывод из запоя на дому недорого https://narkolog.vyvod-iz-zapoya-na-domu-samara-fjc.ru Пригодится если случится беда для Самары. Помощь есть она рядом. Выход есть всегда

  20. Мы не знали как его остановить. Думали он не доживёт до утра. «Везите в наркологию» — сказали они. В интернете нашли отзывы — выезд врача-нарколога в Екатеринбурге. Врач приехал через час. Восстановил водный баланс. Через 2 часа он открыл глаза. Всё анонимно без огласки. Оплата после процедуры. Уже прошло 4 месяца — он не пьёт. сколько стоит прокапаться от алкоголя на дому https://alkogolizm.kapelnicza-ot-pokhmelya-ekaterinburg-dlo.ru Сохраните пока есть время для области. Главное — решиться и позвонить. Выход есть

  21. При развитии алкогольной зависимости исчезает защитный рвотный рефлекс и регулярное употребление спиртных напитков приводит к тому что человек постепенно повышает дозы продолжая непрерывное питьё несколько дней подряд. На поздней стадии алкоголизма удовольствие от алкоголя часто перестает быть главной причиной употребления: спиртное принимается уже для уменьшения ломки тревоги дрожи и других проявлений абстиненции. Получить больше информации – анонимный вывод из запоя Красноярск

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

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

  24. Никогда не думал что окажусь в такой ситуации. Муж перестал быть собой. Таблетки не давали эффекта. В отчаянии я искала в интернете — детоксикация в Екатеринбурге. Принял вызов без выходных. Нормализовал давление. Через 2 часа он уже пил чай. Никто не узнал о случившемся. Оплата после результата. Сейчас он не пьёт уже несколько месяцев. капельница от похмелья услуги https://alkogolizm.kapelnicza-ot-pokhmelya-ekaterinburg-sdj.ru По ссылке — описание услуг для районов. Каждый день промедления — это риск. Вы не одни

  25. Когда каждый день превратился в борьбу за его жизнь. Когда ситуация выходит из-под контроля. В итоге нашли место которое реально работает. Наркологическая клиника в нашем городе. Они не просто лечат — они возвращают к жизни. Комплексный подход а не просто «зашить» или поставить капельницу. Полная анонимность. Врачи — не равнодушные а включённые. Есть варианты для разных бюджетов. Мы выбрали их и не пожалели. частная наркологическая помощь https://zapoy.narkologicheskaya-klinika-v-ekb16.ru Заходите читайте сохраняйте для районов. Вы не обязаны проходить через это в одиночку. Берегите себя и близких

  26. И ты ничего не можешь с этим сделать. Мы боялись за его жизнь. Читали отзывы в интернете — которая приезжает в тот же день. выезд нарколога в Самаре — это оказалось проще чем мы думали. Врач приехал через час после звонка. Нормализовал давление и пульс. Глаза засветились жизнью. Просто врач и пациент. Цена — приемлемая без сюрпризов. Теперь мы знаем куда обращаться в критической ситуации. выведение из запоя на дому анонимно выведение из запоя на дому анонимно Это может спасти чью-то жизнь для области. Помощь рядом нужно только позвонить. Держитесь

  27. И ты не знаешь как его спасти. Он всегда был сильным весёлым. А он не мог встать с кровати. И тогда я нашла выход — выезд врача-нарколога. Без выходных и праздников. Восстановил сердце и давление. Мы снова были вместе. Всё анонимно без учёта. Цена — названа заранее. И я знаю: есть врачи которые спасают. врач нарколог круглосуточно врач нарколог круглосуточно Пригодится если случится беда для нашего города. Помощь рядом она реальная. Вы не одни

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

  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>