Devo utilizzare 3 diversi gestori di transazioni nella mia webapp. Così ho scritto la mia annotazione secondo lo Spring reference (Sezione 10.5.6.3 annotazioni di collegamento personalizzate).HowTo estendere Spring Annotation @Transactional
Un'annotazione (per l'utilizzo di uno specifico TransactionManager) si presenta così:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.transaction.annotation.Transactional;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("customer")
public @interface CustomerTX{
}
Tutto sta funzionando benissimo quando l'annotazione il mio livello di servizio con l'annotazione @CustomerTX personalizzato. Ma devo fornire più opzioni per la mia annotazione, come readonly = true, rollbackFor = e così via. Poiché non è possibile "estendere" un'annotazione (ho davvero bisogno di estendere l'annotazione @Transactional da Spring), qual è l'implementazione corretta per questo?
Pensi davvero dire che devo scrivere qualcosa del genere (assumendo voglio solo hanno fissato la transazione in sola lettura): @Target ({ElementType.METHOD, ElementType.TYPE}) @Retention (RetentionPolicy.RUNTIME) @Transactional (value = "cliente", readOnly = true) @interface pubblico CustomerTXReadonly { } Questo non può essere l'unica soluzione di lavoro ... –
Temo di sì, perché dei limiti delle annotazioni. Come ho detto: o quello o scrivendo i tuoi aspetti (che preferirei) –
Grazie per il tuo aiuto. Proverò a scrivere i miei aspetti personali. È un peccato che le annotazioni non siano estendibili :( –