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.
pin-up depozitsiz bonus bormi http://www.pinup41537.help
melbet зеркало ош melbet53847.help
https://justpaste.me/Clve4
https://justpaste.me/Clve4
mostbet live ставки Бишкек http://mostbet52746.help/
1win support http://1win5751.help
1win site down Uganda 1win site down Uganda
1win демо mines 1win71849.help
плинко пополнение visa плинко пополнение visa
I absolutely love your blog and find most of your post’s to
be exactly I’m looking for. can you offer guest writers to write content for you?
I wouldn’t mind producing a post or elaborating on a
number of the subjects you write regarding here.
Again, awesome web site!
1вин вход Киргизия 1win25340.help
1win коэффициенты https://www.1win43592.help
pin-up crash http://pinup41537.help/
Greetings! I know this is kind of off topic but I was wondering if you knew
where I could find a captcha plugin for my comment form?
I’m using the same blog platform as yours and I’m having trouble
finding one? Thanks a lot!
mostbet Visa http://mostbet52746.help
Howdy, i read your blog from time to time and i own a similar one and i was just wondering if you get a lot of spam responses?
If so how do you reduce it, any plugin or anything you can suggest?
I get so much lately it’s driving me mad so any help is very much appreciated.
What’s up to all, how is everything, I think every one is getting more from this web site, and your views are nice in support of new viewers.
1win sms kod kelmayapti http://1win5751.help/
1win slots http://1win71849.help/
1win bonus in app 1win54316.help
My spouse and I stumbled over here by a different web page
and thought I might check things out. I like what I see so now
i’m following you. Look forward to looking at your web page
again.
Thanks designed for sharing such a good opinion, piece of writing
is fastidious, thats why i have read it fully
краш плинко краш плинко
betting Tips On Betting On Horse Racing (Bukmacherjakie.Com) horse race
free bets cheltenham today
Review my blog post … greyhound Fixtures uk
Wonderful blog! Do you have any hints for aspiring writers?
I’m planning to start my own site soon but I’m a little lost on everything.
Would you recommend starting with a free platform
like WordPress or go for a paid option? There are so many choices out there that
I’m totally overwhelmed .. Any suggestions? Appreciate it!
free greyhound betting sites in uk (Kathleen) odds ascot today
There’s definately a great deal to know about this
topic. I love all of the points you have made.
1win customer care http://www.1win54316.help
1win lucky jet на деньги 1win71849.help
This is a really good tip especially to those fresh
to the blogosphere. Brief but very accurate info… Appreciate your sharing this one.
A must read post!
I’m not sure where you’re getting your information, but great topic.
I needs to spend some time learning more or understanding more.
Thanks for great info I was looking for this info for my mission.
plinko демо http://plinko47590.help/
Зацепил раздел про Прогресс районов Пензенской области: анализ 2026.
Вот, можете почитать:
https://crm64.ru/news/rajony-penzenskoj-oblasti-2026-kak-otlichit-realnyj-progress-ot-otchyotnyh-czifr/
Hi, i read your blog from time to time and i own a similar one and i was just
curious if you get a lot of spam remarks? If so how do you
reduce it, any plugin or anything you can suggest?
I get so much lately it’s driving me insane so any help is very
much appreciated.
Why visitors still use to read news papers when in this technological world the whole thing is available on net?
Hi, of course this piece of writing is actually nice and I have
learned lot of things from it concerning blogging.
thanks.
I think that everything published was actually very logical.
However, what about this? suppose you were to write a
killer title? I ain’t suggesting your information isn’t good,
but suppose you added a post title that makes people desire more?
I mean Integration testing transactions and optimistic locking with
Spring and JUnit | freestyle developments is kinda boring.
You could peek at Yahoo’s home page and note how they create post titles to get viewers
to open the links. You might add a related video or a
picture or two to get readers interested about everything’ve written. In my opinion, it might bring your blog a little bit more interesting.
1win minimum withdrawal 1win minimum withdrawal