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.

20,909 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. И ты не знаешь как его спасти. Мой муж ушёл в запой внезапно. А он не мог встать с кровати. И тогда я нашла выход — нарколог на дом. Без выходных и праздников. Через 2 часа муж открыл глаза. Мы плакали от счастья. Врач просто помог и уехал. Никаких сюрпризов и скрытых платежей. Мы ходим в кино смеёмся строим планы. частный нарколог на дом анонимно https://zapoy.narkolog-na-dom-moskva-abc.ru Там все контакты и условия для нашего города. Каждый день промедления — это риск. Берегите себя и близких

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

  3. Болезнь прогрессирует незаметно. Что уговоры сработают — но нет. Когда каждый день превращается в кошмар — стационар где спасают. Нам посоветовали — место где реально помогают в области. Говорят по-человечески. Капельницы которые действительно очищают. Мягкий выход из запоя. Без позорных справок. Через месяц — захотел жить. Мы снова семья. анонимная наркологическая частная клиника https://kapelnica.narkologicheskaya-klinika-v-nizhnem-novgorode16.ru Там все контакты и описание для области. Не теряйте в панике. Здоровье дороже всего. Вы не одни

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

  5. Когда надоели тёмные коридоры и маленькие комнаты — первая мысль была: «Снесу стену и сделаю открытое пространство». Но быстро выяснилось. И я понял — это основа. Где реально помогают — заказать проект перепланировки. Нашёл компанию которая специализируется именно на этом. Профессионально и грамотно. Всё согласовано всё законно. изготовление проекта перепланировки https://zakazat.proekt-pereplanirovki-kvartiry-mfs.ru Сохраните поделитесь не потеряйте для нашего города. Они сделают проект быстро качественно и помогут согласовать всё с инстанциями. Начните с правильного проекта — и ремонт принесёт только радость

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

  7. Обычно я не пишу такие посты. Мой брат здоровый и весёлый вдруг ушёл в запой. Мы боялись оставлять его одного. Но он не мог идти — он лежал. Посоветовали на работе — вывод из запоя на дому. Просто сделал своё дело. Восстановил сознание. Врач сказал: «Теперь всё будет хорошо». Без записей в карте. Оплата после процедуры. Уже прошло полгода — он не пьёт. снятие алкогольной интоксикации на дому https://narkolog.vyvod-iz-zapoya-na-domu-samara-fjc.ru Заходите сохраняйте не теряйте для нашего города. Если вы в такой же ситуации — не сидите сложа руки. Вы справитесь

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

  9. Но реальность оказалась куда суровее. Меня вежливо отправили обратно. Чтобы сделали быстро недорого и с гарантией согласования. Проект перепланировки квартиры — ребята приехали на замер в тот же день. Всё сделано по нормам с учётом нагрузок и коммуникаций. И я точно знаю что никаких проблем с узакониванием не будет. проектная организация москва перепланировка квартиры https://kvartiry.soglasovanie-pereplanirovki-xkd.ru Там все контакты и условия для столицы. Если не хотите сами мучиться с документами — доверьтесь специалистам. Ремонт начинается с проекта — и это главное правило

  10. В жизни бывают моменты когда опускаются руки. Мы боялись за его жизнь. Звонили в частные клиники — пока не нашли ту самую службу. помощь на дому — это оказалось проще чем мы думали. Быстро без лишних вопросов. Восстановил водный баланс. Мы не верили своим глазам — через 3 часа он уже улыбался. Анонимно и конфиденциально. Цена — приемлемая без сюрпризов. Теперь мы знаем куда обращаться в критической ситуации. вывод из запоя цена на дому https://kapelnica.vyvod-iz-zapoya-na-domu-samara-rtw.ru Сохраните поделитесь не потеряйте для области. Не бойтесь просить о помощи. Держитесь

  11. Это не просто привычка. Родные просто не знают что делать. Дошло до того что боялись за жизнь. Спасли только профессиональные врачи — анонимный стационар в нашем городе. Наркологи с большим стажем. Готовы принять в любой день. Капельницы очищение организма. Не поставят на учёт в диспансер. Отношение человеческое. Недорого по сравнению с государственными больницами. Знакомая семья спасла сына. наркологическая клиника анонимная помощь нарколога https://alkogolizm.narkologicheskaya-klinika-v-nizhnem-novgorode16.ru Вся информация доступна для нашего города. Сохраните в закладки. Не ждите пока станет слишком поздно. Всё обязательно наладится

  12. Поверьте я знаю о чём говорю. Когда просыпаешься и не понимаешь где ты — это страшно. И народные методы — бесполезно. Пока не вызвали — помощь на дому в Санкт-Петербурге. Врач оперативно. Вернули сознание — сказал «спасибо». Анонимно. Цена — без сюрпризов. Перешлите родным. капельница при алкогольной интоксикации спб https://kapelnicza-ot-zapoya-sankt-peterburg-jsi.ru По ссылке вся информация для северной столицы. Когда случится беда — вы будете знать куда звонить. Вы справитесь

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

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

  15. Состояние пациента отслеживается на каждом этапе от первичной консультации до дальнейших рекомендаций. Узнать больше – vyvod-iz-zapoya-moskva

  16. Иногда жизнь ставит перед выбором от которого зависит всё. А потом просто перестал быть собой. Но везде был один ответ: «Везите в стационар». Кто-то из знакомых посоветовал — круглосуточная помощь. Сразу взялся за дело. Через 2 часа муж открыл глаза. Он был слаб но он был жив. Никто не узнал о случившемся. Цена — названа заранее. И это — самое главное. нарколог на дом круглосуточно цены нарколог на дом круглосуточно цены Сохраните поделитесь не потеряйте для Москвы. Если вы сейчас в такой же ситуации — не ждите. Всё наладится

  17. Первый этап направлен на выведение токсинов и стабилизацию функций жизненно важных органов. Применяются инфузионные растворы гепатопротекторы и препараты для нормализации электролитного баланса. Доза и состав подбираются индивидуально после оценки лабораторных показателей. Исследовать вопрос подробнее – lechenie-narkomanii-ekaterinburg0.ru/

  18. Болезнь прогрессирует незаметно. Что мы сможем помочь словами — становилось хуже. Когда каждый день превращается в кошмар — стационар где спасают. Нам посоветовали — анонимный стационар в НН. Слышат что ты им говоришь. Капельницы которые действительно очищают. Никаких побочных эффектов. Без позорных справок. Думали это очередной «развод». Спасибо этим врачам. анонимная наркологическая помощь https://kapelnica.narkologicheskaya-klinika-v-nizhnem-novgorode16.ru Переходите там всё честно для районов. Сохраните. Помощь приходит к тем кто решается позвонить. Не сдавайтесь

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

  20. Когда захотелось простора и света — первая мысль была: «Снесу стену и сделаю открытое пространство». Что стены просто так не сносятся. Знакомые предупредили: «Без документации не согласуют». Где делают качественно и недорого — заказать проект перепланировки. Нарисовали несколько вариантов. Профессионально и грамотно. Осталось только сделать ремонт и воплотить всё в жизнь. составить проект перепланировки квартиры https://zakazat.proekt-pereplanirovki-kvartiry-mfs.ru Там все контакты и условия для столицы. Они сделают проект быстро качественно и помогут согласовать всё с инстанциями. Начните с правильного проекта — и ремонт принесёт только радость

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

  22. Все попытки помочь проваливались. Глаза мутные руки дрожат. Таблетки не работали. То что я нашёл случайно в интернете — детоксикация в Самаре. Врач приехал через час. Осмотрел поставил капельницу. Только семья и врач. Мы заплатили после результата. Ходит на работу общается с детьми. нарколог на дом вывод из запоя самара нарколог на дом вывод из запоя самара Пригодится если случится беда для нашего города. Если у вас такая же ситуация — не ждите. Вы справитесь

  23. Думал что всё просто: стены снести двери перенести кухню объединить с гостиной. Первый раз попытался сделать всё сам. Чтобы сделали быстро недорого и с гарантией согласования. заказать проект в Москве — помогли выбрать оптимальный и согласовали с инспекцией. Через месяц у меня был готовый проект на руках. Теперь у меня есть все документы для ремонта. нужен проект перепланировки квартиры https://kvartiry.soglasovanie-pereplanirovki-xkd.ru Пригодится если планируете делать перепланировку для нашего города. Они сделают проект согласуют и дадут гарантию что всё пройдёт. Ремонт начинается с проекта — и это главное правило

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

  25. И ты ничего не можешь сделать. Так было с моим братом. Срывы повторялись снова и снова. Что нужна изоляция. стационар для зависимых в области. Здесь не бывает безразличия. Всё что нужно для полного восстановления. Без учёта в наркодиспансере. Условия — человеческие. Цена — адекватная. Мы не ошиблись с выбором. анонимный наркологический центр анонимный наркологический центр Заходите читайте сохраняйте для районов. Позвоните спросите приезжайте. Всё наладится

  26. С каждым днём становится только хуже. Запои становятся всё длиннее. Думали что уже не вытащим. Спасли только профессиональные врачи — частный наркологический центр в НН. Психотерапевты которые знают подход. Готовы принять в любой день. Восстановление мозга и печени. Анонимно — это главное преимущество. Есть всё необходимое. Цены фиксированные. Сами звонили когда не знали что делать. наркоцентр https://alkogolizm.narkologicheskaya-klinika-v-nizhnem-novgorode16.ru Там все телефоны и адреса для области. Сохраните в закладки. Звоните уже сегодня. Вы справитесь

  27. Кажется что это никогда не закончится. А вдруг не проснётся? Мы решили попробовать. срочная помощь в Воронеже — то что спасло его. Через 2 часа он уже пил чай. Просто врач и пациент. Цена — названа заранее. Теперь он не пьёт. капельница от запоя в воронеже https://alkogolizm.kapelnicza-ot-zapoya-voronezh.ru По ссылке — подробности для нашего города. Помощь рядом

  28. Сам столкнулся с этой бедой. Когда просыпаешься и не понимаешь где ты — это выбивает из колеи. И народные методы — бесполезно. Пока не вызвали — капельница от запоя в Питере. Без лишних вопросов. Осмотрели поставили капельницу — сказал «спасибо». Без учётов. Цена — без сюрпризов. Пусть будет в телефоне. сколько стоит капельница от запоя https://kapelnicza-ot-zapoya-sankt-peterburg-jsi.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>