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

  1. Лечение зависимости строится индивидуально. Специалист учитывает возраст стаж употребления спиртного результаты обследования наличие хронических заболеваний психологическое состояние прошлый опыт кодирования и продолжительность запоя. Хотя родственникам часто хочется получить быстрый результат после одной процедуры алкоголизм является хроническим расстройством поэтому устойчивое восстановление обычно требует нескольких последовательных этапов. Детоксикация помогает справиться с физическими последствиями кодировка поддерживает период трезвости психотерапевтическую работу используют для изменения поведения и мотивации а реабилитация помогает человеку вернуться к семье работе и привычным делам. Подробнее – частная наркологическая клиника

  2. Попали в переплет — алкоголь победил. Думали само пройдет — бесполезно. Прочитал отзывы — выездная бригада. Без выходных и праздников. Купируют синдром отмены — без боли. Без постановки на учет. Все прозрачно. Организм очищается. Соседям так выводили — лучшие в городе. вывод из запоя врач на дом https://alkogolizm-x9w.vyvod-iz-zapoya-na-domu-samara-cde.ru Всё понятно без воды. Кто в Самаре — не потеряйте. Время — деньги. Помощь придёт

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

  4. С каждым может случиться — запой длится уже неделю. Поили каплями — нервы на пределе. А ведь можно было сразу — срочная помощь нарколога в НН. Круглосуточно даже в праздники. Поставят капельницу — без лишней огласки. Никаких «красных крестов» в карте. Экономия времени и нервов. Знакомые обращались — врачи понимающие. наркологическая помощь срочно https://zapoy.narkologicheskaya-pomoshh-nizhnij-novgorod.ru Переходите там всё написано в пригороде. Не потеряйте. Лучше иметь номер заранее. Всё будет хорошо

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

  6. Беда — близкий не выходит из состояния. Скорая не приезжает — а риск огромный. Узнал куда звонить — выезд нарколога в северной столице. Оперативно выезжают. Капельницы и растворы. Очищают организм — профессионально. Анонимно и конфиденциально. Всё честно. вывести из запоя цена https://alkogolizm.vyvod-iz-zapoya-na-domu-sankt-peterburg-vkx.ru Там контакты и цены для Питера. Проверил на себе — помогли быстро. Самочувствие отличное. Чем раньше тем лучше. Кому надо в Питере — записывайте. Берегите себя

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

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

  9. Такое горе — близкий сорвался. Состояние тяжелое а таблетки не берут. Соседи порекомендовали — вывод из запоя на дому. Не заставляют ждать. Осматривают ставят капельницу — без риска. Анонимно. Цены без сюрпризов. И главное — результат уже через пару часов. Проверенный вариант — безопасно и надежно. снятие алкогольной интоксикации на дому https://alkogolizm.vyvod-iz-zapoya-na-domu-samara-cde.ru На сайте условия работы для области. Запишите. Не тяните до утра. Берегите друг друга

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

  11. Столкнулись с ужасом — алкоголизм разрушает. Пытались уговаривать — бесполезно. Единственный выход — лечение в клинике в области. Персонал понимающий. Снимают ломку — под контролем. Без огласки. Условия — как дома. Стоимость — адекватная. Брат прошёл курс — человек вернулся к жизни. наркологическая клиника анонимно нижний новгород https://zapoy.narkologicheskaya-klinika-v-nizhnem-novgorode16.ru Там и телефон и адрес для области. Не молчите

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

  13. Сразу понял — без грамотного проекта никуда. Меня вежливо отправили обратно. И нашёл тех кто взялся за работу и всё довёл до конца. заказать проект в Москве — предложили несколько вариантов планировки. Через месяц у меня был готовый проект на руках. Теперь у меня есть все документы для ремонта. проект перепланировки квартиры москва проект перепланировки квартиры москва Там все контакты и условия для нашего города. Если не хотите сами мучиться с документами — доверьтесь специалистам. Ремонт начинается с проекта — и это главное правило

  14. Жуткая история. Состояние ухудшается. Скорую боимся вызывать — а соседи уже заметили. Хорошо что есть служба — круглосуточная помощь на месте. Врач приехал через 40 минут. Дали успокоительное — с контролем давления. Никаких следов. Прайс фиксированный. Через 3 часа — человек жив дышит говорит. У нас двое так восстановились — приезжают быстро. запой вызов на дом https://narkolog.vyvod-iz-zapoya-na-domu-samara-fgh.ru Откроете — увидите про область. Сохраните в телефоне. Не теряйте его. Мы с вами

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

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

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

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

  19. Никто не застрахован — запой длится уже неделю. Поили каплями — ноль эффекта. Оказывается есть выход — наркологическая помощь в областном центре. Работают без выходных. Нормализуют давление и сон — профессионально. Никаких справок в поликлинику. Назовут до приезда. Знакомые обращались — всё четко и без воды. оказание наркологической помощи https://zapoy.narkologicheskaya-pomoshh-nizhnij-novgorod.ru По ссылке — контакты в нашем городе. Отправьте близким. Не искать в панике. Всё будет хорошо

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

  21. Запой не щадит никого. Обещаешь себе и близким — срыв за срывом. Я видел это своими глазами — своими силами не вытащить. Единственное что реально помогает — неотложная наркологическая служба в НН. Врач буквально через 40 минут. Посмотрели измерили — всё чисто без боли. Без справок в наркодиспансер. Назвали цену заранее. После процедуры — человек пришёл в себя. Без этого бы не справились. нарколог наркологическая помощь нарколог наркологическая помощь На сайте всё подробно для районов. Держите в телефоне. Номер уже должен быть. Всё поправимо

  22. Такое горе — человек ушел в запой. С каждым часом хуже а врач нужен срочно. Вовремя друзья подсказали — срочный выезд в Самаре. Приезжают за час. Снимают интоксикацию — без риска. Без учетов. Фиксированный прайс. Организм восстанавливается. У нас так спасали отца — безопасно и надежно. вывод из запоя на дому самара цены https://alkogolizm.vyvod-iz-zapoya-na-domu-samara-cde.ru Там и телефон и прайс для области. Запишите. Лучше перестраховаться. Всё наладится

  23. Срыв случился — близкий не выходит из состояния. Таблетки не помогают — а риск растёт. Друзья порекомендовали — срочная помощь на месте в нашем городе. Оперативно выезжают. Капельницы и растворы. Ставят капельницу — профессионально. Анонимно и конфиденциально. Стоимость приемлемая. вызов нарколога на дом недорого https://zapoy.narkolog-na-dom-voronezh19.ru Все условия для нашего города. Звонил им — всё четко. Организм приходит в норму. Не терпите. Кто в области — записывайте. Всех благ

  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>