Mi interessa usare Spring's Cache Abstraction su un modulo con cui sto lavorando, ma tutte le operazioni sui dati sono in raccolte per evitare più invocazioni dell'origine dati, quindi non sono sicuro di avere un "pointcut" decente a cui fare riferimento alla cache a livello di metodo. Questo non è un problema specifico di Spring o Java, ma più un problema di progettazione.
Ad esempio:
public class SomeDataAccessObject{
private SomeBatchingDataSourceAbstraction datasource;
//would ideally add a cache annotation to this method to cache based on input, but that
//clearly won't work in this scenario because we are loading multiple which may have
//some cache hits only
public List<String> getNames(List<Integer> ids){
//ideally I would load as many names as I can from the cache and
//then use the datasource to get the rest
//I can achieve this with a programatic cache but it is very invasive
return datasource.fetch(ids);
}
}
Qualcuno ha escogitato un buon modo per ridisegnare un tale scenario che mi permettesse di usare il caching dichiarativo a livello di metodo in stile Spring? Ricorda che voglio mantenere l'oggetto di accesso ai dati (sopra) efficacemente senza stato per essere sicuro.