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

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

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

  3. И ты вдруг понимаешь что твой близкий человек уже не тот кого ты знал. Он перестал отвечать на звонки не выходил из дома. И мы не знали как ему помочь. Анонимно и без лишних вопросов. Нарколог на дом — который дал нам второй шанс. Через пару часов он открыл глаза и заговорил. Я не мог поверить что это случилось так быстро. Всё прошло анонимно без учётов. Никаких скрытых платежей. И я знаю что это благодаря той самой капельнице и тому врачу. услуги нарколога на дому https://zapoy.narkolog-na-dom-moskva-gjy.ru Там все контакты и условия для нашего города. Если вы сейчас в такой же ситуации — не ждите. Всё наладится

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

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

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

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

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

  9. После первичной диагностики начинается активная фаза медикаментозного вмешательства. Современные препараты вводятся капельничным методом что позволяет быстро снизить уровень токсинов в крови и восстановить нормальные обменные процессы стабилизируя работу печени почек и сердечно-сосудистой системы. Детальнее – http://vyvod-iz-zapoya-donetsk-dnr0.ru/

  10. Наркологическая помощь в Реутове оказывается круглосуточно включая выходные дни. После обращения специалист уточняет длительность употребления алкоголя примерное количество спиртного наличие хронических болезней принимаемые препараты и текущие симптомы. Эти данные помогают предварительно оценить тяжесть ситуации и подобрать оптимальное лечение. Если человек находится в стабильном состоянии и отсутствуют показания для госпитализации вывод из запоя может проводиться на дому. При серьезной интоксикации психических расстройствах сердечной недостаточности и других осложнениях более безопасным решением становится лечение в стационаре. Ознакомиться с деталями – https://3.vyvod-iz-zapoya-reutov4.ru/

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

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>