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.
mostbet eski akkaunt kirish https://mostbet21640.help
mostbet turnee casino http://mostbet54831.help/
best greyhound betting system cheltenham free bet offers
what is the best betting app for horse racing
Visit my website :: tonight’s greyhound meetings [Https://bukmacherjakie.com]
Woah! I’m really enjoying the template/theme of this
site. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between usability and appearance.
I must say that you’ve done a awesome job with this. Also, the
blog loads very fast for me on Opera. Outstanding Blog!
Hello to every body, it’s my first go to see of this webpage; this blog contains awesome and genuinely fine
stuff in support of readers.
can you play online free casino game reviews (Jayson) in united states, is
online gambling allowed in australia and best online poker sites for united kingdoms,
or uk slot sites not on gamstop
best each way bets cheltenham today
Review my web site; https://grayhound-betting.com/
Hi there I am so grateful I found your site I really found you by mistake while I was looking on Yahoo for something else Anyhow I am here now and would just like to say thank you for a fantastic post and a all round interesting blog I also love the theme/design I dont have time to read through it all at the moment but I have saved it and also added your RSS feeds so when I have time I will be back to read more Please do keep up the excellent job. https://dragee.com.ua/chomu-korpus-fary-na-kodiaq-triskaietsya.html
I think what you published made a lot of sense. But, what about this?
what if you added a little content? I mean, I don’t want
to tell you how to run your website, but what if you added
something that grabbed a person’s attention? I mean Integration testing transactions and optimistic locking with Spring and JUnit | freestyle developments is a
little vanilla. You could peek at Yahoo’s home page and see how they create post headlines to grab people interested.
You might try adding a video or a picture or two
to grab readers excited about everything’ve got to
say. Just my opinion, it could make your website a little livelier.
betting systems for horse Dog racing betting sites (grayhound-betting.com)
free
mostbet adresă de intrare http://mostbet54831.help
Hey there I am so happy I found your weblog, I really found
you by accident, while I was looking on Askjeeve for something else, Anyways I am
here now and would just like to say thank you for a remarkable post and
a all round enjoyable blog (I also love the theme/design), I don’t have time to read it all at the minute but I have bookmarked it and also added
your RSS feeds, so when I have time I will be back to read a lot more,
Please do keep up the fantastic jo.
mostbet Azərbaycan promo kod mostbet Azərbaycan promo kod
We’re a group of volunteers and starting a new scheme
in our community. Your web site provided us with valuable information to work on. You
have done a formidable job and our entire community will be grateful to you.
I think the admin of this site is actually working hard in favor
of his web page, because here every data is quality based information.
Great article. I will be facing some of these issues as well..
мелбет фрибет киргизия мелбет фрибет киргизия
Thanks a bunch for sharing this with all people you really realize what you are speaking about Bookmarked. Please additionally talk over with my site =). We could have a link change contract among us https://ostercenter.com.ua/bi-led-linzy-proty-matrychnykh-far-khto.html
Please let me know if youre looking for a article writer for your site. You have some really good articles and I think I would be a good asset. If you ever want to take some of the load off Id love to write some material for your blog in exchange for a link back to mine. Please blast me an e-mail if interested. Cheers https://vedanta.dp.ua/tykhyi-aphreid-yak-znaity-bi-led-linzy-z.html
mostbet humo yechish mostbet humo yechish
mostbet cod promo pentru Moldova mostbet cod promo pentru Moldova
mostbet download olmur https://www.mostbet2011.help
mostbet приложение Кыргызстан http://mostbet26809.help/