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.
After looking at a few of the articles on your blog, I seriously appreciate your way of blogging.
I book marked it to my bookmark site list and
will be checking back in the near future. Take a look at my website too and tell me
what you think.
mostbet manat mostbet2015.help
pin up Uzbekistan https://www.pinup39174.help
With havin so much written content do you ever run into
any issues of plagorism or copyright infringement? My site
has a lot of unique content I’ve either authored myself or outsourced
but it seems a lot of it is popping it up all over the web without my authorization. Do you know any methods
to help reduce content from being stolen? I’d truly appreciate it.
My family members aⅼl the time say tһat
I am killing my timе here at net, howeѵer I
know Ι am gettіng familiarity everyday Ьy reading thes pleasant content.
Hello everyone, it’s my first visit at this website, and piece of writing
is actually fruitful for me, keep up posting these articles.
mostbet új tükör oldal http://www.mostbet2022.help
melbet site alternativ http://melbet07892.help
Woah! I’m really enjoying the template of this site.
The blog loads very quick, just like the nhandinhkeonhacai mobile app.
Outstanding Blog!
Hello, I enjoy reading through your post.
I like to write a little comment to support you.
mostbet versiya uyğun deyil https://www.mostbet2015.help
mostbet Republica Moldova download http://mostbet40596.help/
1win currency settings https://1win5527.ru
mostbet free spins bez vkladu https://mostbet32570.help/
1win aviator siqnal 1win64218.help
Thanks for finally talking about > Integration testing transactions and optimistic locking with Spring and JUnit
| freestyle developments gsc.tab=0
Live streams of Lucky Neko trended again thanks to the more dynamic broadcast feel.
1 win регистрация и вход на сайт http://www.1winkg.in.net
mostbet app telepítése mostbet app telepítése
melbet aviator bonus http://www.melbet07892.help
Почему пользователи выбирают площадку KRAKEN?
Маркетплейс KRAKEN заслужил доверие многочисленной аудитории благодаря сочетанию ключевых факторов.
Во-первых, это широкий и разнообразный ассортимент,
представленный сотнями продавцов.
Во-вторых, интуитивно понятный интерфейс KRAKEN, который
упрощает навигацию, поиск товаров и управление заказами
даже для новых пользователей.
В-третьих, продуманная система безопасных транзакций, включающая механизмы разрешения
споров (диспутов) и возможность использования условного депонирования, что минимизирует риски для обеих сторон сделки.
На KRAKEN функциональность сочетается с внимательным
отношением к безопасности
клиентов, что делает процесс покупок
более предсказуемым, защищенным и,
как следствие, популярным среди пользователей, ценящих анонимность и надежность.
mostbet bank transfer https://mostbet2015.help
horse racing windsor results
Feel free to visit my page :: https://horse-betting.com/
mostbet platformă http://mostbet40596.help/
mostbet zrušení výběru https://www.mostbet32570.help
1win blackjack https://www.1win64218.help
kombiwette absichern
Here is my site … bester wettanbieter Schweiz
gegen den euro Bonus Code Wetten
سلام، خودم امروز وسط وبگردی تو اینترنت
به این صفحه برخوردم و بدون اغراق برام جالب بود.
محتواش خیلی کامل بود وبه ندرت همچین منبعی پیدا کنم.
به نظرم برای خیلیها مفید باشه.
برای کسایی که دنبال اطلاعات کامل هستن حتما یه نگاهی بندازن.
در مجموع تجربه خوبی بود و احتمالا بازهم سر میزنم
خلاصهوار
برای کاربران علاقهمند به
فضای شرطبندیآنلاین
میخوان تست کنن
این سایت خوب
احتمالاً میتونه
مناسب کاربران باشه
چیزی که جلب توجه میکنه اینه که
برندهایی مثل
enfejaronline شناخته شده
و
سایت siЬbet
پیشرفت قابل توجهی داشتن
در پایان کار
خوب بود
و
بیتردید
مراجعه مجدد دارم
.
Also visit my web blog: معرفی یک سایت قابل اعتماد برای بازی انفجار اینترنتی
1win скачать на телефон андроид официальный https://1winkg.in.net
mostbet bitcoin befizetés mostbet bitcoin befizetés
live casino melbet http://www.melbet07892.help
buchmacher lizenz
My site – daglfing Pferderennen Wetten
Hello would you mind letting me know which webhost you’re
utilizing? I’ve loaded your blog in 3 completely different browsers and I must say this blog loads
a lot faster then most. Can you suggest a good web hosting provider at a honest price?
Kudos, I appreciate it!
mostbet pagina oficială mostbet pagina oficială
mostbet virtuální sporty mostbet virtuální sporty
Remarkable! Its really awesome article, I have got much clear
idea concerning from this paragraph.
Hello just wanted to give you a quick heads up and let you know a few
of the images aren’t loading properly. I’m not sure why but I think its a
linking issue. I’ve tried it in two different web browsers and both show the same outcome.
как использовать бонусный счет на 1win http://1winkg.in.net/
mostbet кэшбэк казино https://www.mostbet76480.help
1win изменить номер https://1win86307.help
1win плінко http://1win14675.help/
1win promo problem 1win5527.ru
https://nohuonline.net/
جمعبندی
برای اون دسته که
شرط آنلاین
میگردن
این فضای آنلاین
میتونه واقعاً
گزینه خوبی باشه
همچنین
وبسایتهایی مثل
enfeјaronline جدید
و
sibbet معتبر
کاربرای زیادی دارن
در کل داستان
مناسب بود
و
دوباره
استفاده خواهم کرد
Heere is my web sitе – رسانه دانشگاهی
Fortune Rabbit feature buy decisions are being modeled before clicking.
mostbet autoexcludere joc http://mostbet40596.help
mostbet kryptoměny platby mostbet kryptoměny platby
I’ve been browsing online more than three hours today, yet I never found
any interesting article like yours. It’s pretty worth enough for me.
In my view, if all webmasters and bloggers made good content as you
did, the web will be much more useful than ever before.
1win promo kod Azərbaycan https://1win64218.help