Springmodules är en samling av verktyg och tillägg till Spring Framework. Jag halkade in på att använda detta då vi i mitt projekt använde OSCache programatiskt och vi insåg att det blev mycket boilerplate kod. Här är ett typiskt användande av OSCache.

En lösning är att använda springmodules cache-stöd för OSCache, EHCache m.fl. Det är en AOP lösning där målobjektet får en proxy som fångar anrop till utvalda metoder, gör en nyckel av anropet och cachar resultatet. Mycket bekvämt!

I sin annotering anger man vilken cache/flush modell som skall användas, modellerna skapar man med fördel i sin spring applicationcontext och innehåller konfiguration för exempelvis hur länge ett objekt ska stanna i cachen. Modellerna skiljer sig lite beroende på val av cache.

Man kan låta proxies automatgenereras utifrån cache/flush annotations eller så kan man explicit skapa proxies per böna.

Ett varningens finger dock, även om det var mycket bekvämt kändes det inte helt moget. Ett ex är att det ännu (v0.9) inte går att flusha cachen på lägre nivå än cache/grupp nivå. Ännu allvarligare är att jag upplevde en minnesläcka i ramverkets interna metadata cachning, dvs cachningen av annotations. Att sluta använda annotations och istället använda proxy-konfiguration i xml går runt problemet. Ytterligare en frustration som tyder på att lösningen inte är helt genomarbetat beskrivs här
Sammanfattningsvis, bra tänkt men vänta gärna några versioner.