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

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

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

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

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

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

  6. Ситуация была аховая. Мне ответили: «Выезжаем через час». Поставил капельницу. срочная детоксикация — это дало нам второго шанса. Цена оказалась ниже чем я думал. вывод из запоя вызов вывод из запоя вызов Сохраните поделитесь не потеряйте для МСК. Каждый час на счету. Вывод из запоя — это реальность и она работает

  7. Мы долго не хотели признавать что это болезнь. Мы не знали как его вернуть. Но везде нас встречали либо равнодушием либо огромными ценами. Наркологическая клиника — то что вернуло брата к жизни. Назначили курс капельниц психотерапии и реабилитации. Это было невероятное облегчение. И это помогло сохранить его репутацию и достоинство. Всё было честно и прозрачно. Сейчас брат не пьёт уже больше года. наркология спб https://alkogolizm.narkologicheskaya-klinika-v-spb14.ru Это может спасти жизнь для Питера. Звоните узнавайте действуйте. Сделайте первый шаг к выздоровлению уже сегодня — он может изменить всё

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

  9. Думали что он просто устал или переживает. И мы просто не узнавали его. Когда он ушёл в запой мы пытались до него достучаться. И нашли ту где врачи не просто лечат а реально помогают. стационар для лечения зависимостей — то что действительно помогло брату. Его госпитализировали врачи провели полное обследование. Мы снова узнавали в нём брата которого любили. Всё прошло анонимно — никто не узнал. Никаких скрытых платежей. Сейчас брат не пьёт уже больше года. платная наркологическая помощь https://zapoy.narkologicheskaya-klinika-v-spb14.ru Это может спасти жизнь для Питера. Если вы оказались в похожей ситуации — не ждите. Верните близкого человека к жизни — начните с одного звонка

  10. И ты оказываешься перед выбором: сдаться или бороться. Он просто перестал быть собой. Врачи говорили одно: «Только стационар». Позвонил объяснил ситуацию. Нарколог на дом — который дал нам надежду. Через пару часов он открыл глаза и заговорил. Мы просто сидели и держали его за руки. Всё прошло анонимно без учётов. Цену сказали сразу по телефону. Сейчас брат не пьёт уже 4 месяца. вызов нарколога на дом круглосуточно вызов нарколога на дом круглосуточно Пригодится если случится беда для нашего города. Каждый день промедления — это риск. Всё наладится

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

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

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

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

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

  16. Когда в семье происходит такое мир переворачивается. Он всегда был сильным волевым человеком. Но нам отвечали одно: «Только стационар». И уже через час врач был у нас. Нарколог на дом — это был звонок который спас отца. Снял интоксикацию восстановил пульс. Врач оставил рекомендации и уехал. Всё прошло анонимно без учётов. Никаких сюрпризов и скрытых платежей. Сейчас отец не пьёт уже 4 месяца. наркологическая помощь на дому в москве круглосуточно https://zapoy.narkolog-na-dom-moskva-tfb.ru Сохраните поделитесь не потеряйте для районов. Если вы сейчас в такой же ситуации — не ждите. Всё наладится

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

  18. Но зависимость оказывается сильнее. Но очень быстро переросло в ежедневный запой. Она перестала следить за собой бросила работу. Я позвонила мне всё подробно объяснили. анонимная госпитализация в Москве — это было тем решением которое мы так долго искали. Врачи наблюдали за ней круглосуточно. Мы снова увидели ту сестру которую любили. Никто из знакомых не узнал о её лечении. Всё честно и прозрачно. Огромное спасибо врачам и персоналу клиники. наркологическая больница стационар https://zapoy.narkologicheskij-staczionar-moskva-vkn.ru Это может пригодиться в трудный момент для нашего города. Если вы оказались в похожей ситуации — не отчаивайтесь. Не бойтесь сделать первый шаг — он может изменить всё

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

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>