2014-06-16 7 views
6

Meine Frage bezieht sich auf Spring AspectJ-Modus und vor allem, wie es zu ermöglichen, für:Spring AspectJ-Modus Caching im Vergleich zu AspectJ-Modus Transaktionen

  1. Transaktionsmanagement
  2. Caching

1) Ich habe bemerkt, Um den AspectJ-Modus für das Transaktionsmanagement zu aktivieren, musste ich nur folgendes tun:

2) Um AspectJ-Modus zu verwenden für das Caching von einem bis scheint hat:

-Setzen folgende jar in Tomcat lib: org.springframework:spring-instrument-tomcat -Add die folgende Zeile in Tomcat server.xml:

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

-Add die folgende Konfiguration:

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

-bis endlich in der Lage sein, den AspectJ-Modus wie folgt zu verwenden:

@Configuration 
@EnableCaching(mode = AdviceMode.ASPECTJ) 

Ist das oben rechts? Wenn ja, warum unterscheidet sich das AspectJ-Modus-Caching von der AspectJ-Modus-Transaktionsunterstützung?

Antwort

1

Die zusätzliche Konfiguration, die Sie für den @EnableCaching-Fall aufgelistet haben, wird nicht mehr benötigt als im Fall von @EnableTransactionManagement. Wenn Sie mode = AdviceMode.ASPECTJ wählen, bedeutet dies lediglich, dass anstelle der CGLIB-Proxies AspectJ für die Transaktionsmanagement/Cache-Funktionalität verwendet wird. Wenn Sie die Kompilierungszeit mit spring-aspects-<version>.jar aktiviert haben, die als eine Aspektbibliothek aufgelistet ist, sollte es sofort funktionieren (vorausgesetzt, alle anderen erforderlichen Transaktionsmanagement-/Cache-Konfigurationsbeans sind im Anwendungskontext verfügbar). Wenn Sie keine Weben mit der Kompilierungszeit verwenden, sondern sich stattdessen für das Load-Time-Weben entscheiden, ist es ausreichend, -javaagent:/path/to/aspectjweaver-<version>.jar in der Befehlszeile als JVM-Argument zu verwenden. Die Werte ReflectiveLoadTimeWeaver und TomcatInstrumentableClassLoader sind nur erforderlich, wenn in Ihrem Build kein Weben zur Kompilierungszeit verwendet wird und ein Webagenten zum Laden der Ladezeit nicht in der VM vorhanden ist und Sie dennoch über Webload-Webing über Classloading verfügen möchten.

Verwandte Themen