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

  1. Но жизнь — непредсказуемая штука. Он пил уже 5 дней подряд. Он не узнавал родных. Искали врачей но все отказывались. Друг дал номер — помощь при запое в районах. Врач приехал через час с небольшим. Восстановил электролитный баланс. Через 3 — попросил чай. Без записей в амбулаторной карте. Цена — названа заранее. Прошло 8 месяцев — он не пьёт. капельница от алкоголизма на дому https://zapoy.kapelnicza-ot-pokhmelya-ekaterinburg-fuj.ru Пригодится если случится беда для области. Если вы сейчас в такой же ситуации — не откладывайте. Вы справитесь

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

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

  4. При подобных симптомах стоит обратиться за помощью. Бесплатно можно уточнить общие условия и стоимость однако индивидуальное лечение назначает врач при личном контакте с больным. Получить больше информации – https://v.vivod-iz-zapoya-v-sankt-peterburge16.ru/

  5. В данной статье мы поговорим о будущем медицины акцентируя внимание на прорывных разработках и их потенциале. Читатель узнает о новых подходах к лечению роли искусственного интеллекта и возможностях персонализированной медицины. Более того — здесь – https://formula-clinic.ru/vyvod-iz-zapoya

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

  7. Он никогда не жаловался всегда помогал. Он пил уже 10 дней подряд. Звонила во все больницы обзванивала знакомых. Нарколог на дом — это вернуло его к жизни. Через 3 часа он уже пил чай. Просто помощь и поддержка. Оплатили после. И это — самое главное. нарколог анонимно москва https://kapelnica.narkolog-na-dom-moskva-abc.ru Там все контакты и условия для Москвы. Если вы сейчас в такой же ситуации — не ждите. Вы не одни

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

  9. Когда кажется что хуже уже не будет. Мы просто сидели рядом и боялись. Но он не мог даже сидеть. Кто-то из соседей — помощь при алкогольном отравлении. Через 2 часа он уже пил чай. Никто не узнал о нашей беде. Никаких сюрпризов. Спасибо тем кто не отказал. выведение из запоя воронеж выведение из запоя воронеж Там все контакты для нашего города. Если сейчас вы в такой же ситуации — не теряйте времени

  10. Вывод из запоя в Реутове в наркологической клинике «Детокс» — комплексное медицинское лечение направленное на прекращение длительного употребления алкоголя снятие абстинентного синдрома детоксикацию организма и восстановление нормального самочувствия. Помощь доступна круглосуточно: опытный врач-нарколог может провести осмотр на дому либо организовать лечение пациента в стационаре. Формат выбирается индивидуально с учетом длительности запоя количества выпитого возраста наличия хронических заболеваний выраженности интоксикации и общего физического и психического состояния человека. При тяжелых случаях наркологическая помощь оказывается под постоянным медицинским наблюдением. Изучить вопрос подробнее – вывод из запоя дешев реутове

  11. Самостоятельный вывод из многодневного запоя может сопровождаться резкими изменениями давления сердечного ритма сна и психического состояния. Особенно высокий риск отмечается при многолетнем алкоголизме заболеваниях сердца печени сосудов и нервной системы. Нарколог учитывает эти факторы при выборе лечения и решает можно ли безопасно выполнять процедуры на дому. Получить больше информации – вывод из запоя вызов в Санкт-Петербурге

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

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>