2014-06-16 16 views
6

mia domanda riguarda la modalità AspectJ di primavera e soprattutto come abilitarlo per:di primavera contro le operazioni AspectJ-mode

  1. Gestione delle transazioni
  2. Caching

1) ho notato che per abilitare la modalità AspectJ per la gestione delle transazioni, ho solo dovuto fare quanto segue:

@Configuration 
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ) 

2) considerando che, per utilizzare la modalità AspectJ per la cache sembra si deve:

-Mettere il seguente vaso in directory lib di Tomcat: org.springframework:spring-instrument-tomcat -Add la seguente riga nel server.xml di Tomcat:

<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/> 

-Add la seguente configurazione:

@Configuration 
@EnableLoadTimeWeaving(aspectjWeaving = AspectJWeaving.ENABLED) 
public class LoadTimeWeavingConfiguration implements LoadTimeWeavingConfigurer { 
    @Override 
    public LoadTimeWeaver getLoadTimeWeaver() { 
     return new ReflectiveLoadTimeWeaver(); 
    } 
} 

-per essere finalmente in grado di utilizzare la modalità AspectJ come segue:

@Configuration 
@EnableCaching(mode = AdviceMode.ASPECTJ) 

Il diritto in alto è? In tal caso, perché il caching in modalità AspectJ è diverso dal supporto delle transazioni in modalità AspectJ?

risposta

1

La configurazione aggiuntiva elencata per la custodia @EnableCaching non è più necessaria rispetto al caso di @EnableTransactionManagement. Se si sceglie mode = AdviceMode.ASPECTJ significa solo che utilizzerà AspectJ anziché i proxy CGLIB per la funzionalità di gestione delle transazioni/cache. Se la tessitura in fase di compilazione è abilitata con spring-aspects-<version>.jar elencata come una libreria di aspetti, dovrebbe funzionare immediatamente (dato che tutti gli altri requisiti di gestione delle transazioni/cache relativi alla configurazione della cache sono disponibili nel contesto dell'applicazione). Se non si utilizza la tessitura in fase di compilazione ma si sceglie invece di utilizzare la tessitura a tempo di caricamento, avere sulla riga di comando come argomento JVM è sufficiente. I modelli ReflectiveLoadTimeWeaver e TomcatInstrumentableClassLoader sono necessari solo nel caso in cui non venga utilizzata la tessitura in fase di compilazione nella build e un agent di tessitura a tempo di caricamento non sia presente nella VM e si desideri continuare a tessere il caricamento in base al carico di classe.