2014-06-16 16 views
6

Moje pytanie odnosi się do trybu sprężyny AspectJ a zwłaszcza jak włączyć go do:sprężyny AspectJ trybie buforowania kontra transakcji AspectJ trybu

  1. zarządzanie transakcjami
  2. buforowanie

1) zauważyłem Aby włączyć tryb AspectJ do zarządzania transakcjami, musiałem jedynie wykonać następujące czynności:

@Configuration 
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ) 

2) W celu korzystania z trybu AspectJ do buforowania wydaje trzeba:

-Put następującym słoik do lib Tomcat: org.springframework:spring-instrument-tomcat -add następujący wiersz w server.xml Tomcat:

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

-Dodaj następującej konfiguracji:

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

-to ostatecznie będzie w stanie wykorzystać tryb AspectJ następująco:

@Configuration 
@EnableCaching(mode = AdviceMode.ASPECTJ) 

Czy powyższe jest prawidłowe? Jeśli tak, dlaczego buforowanie w trybie AspectJ różni się od obsługi transakcji w trybie AspectJ?

Odpowiedz

1

Dodatkowa konfiguracja wymieniona dla obudowy @EnableCaching nie jest bardziej potrzebna niż w przypadku @EnableTransactionManagement. Jeśli wybierzesz mode = AdviceMode.ASPECTJ, po prostu będzie używać AspectJ zamiast CGLIB proxy do zarządzania transakcjami/pamięcią podręczną. Jeśli masz włączoną technologię kompilacji z spring-aspects-<version>.jar wymienioną jako biblioteka aspektu, powinna ona działać po rozpadzie (pod warunkiem, że wszystkie inne wymagane fasole zarządzania transakcjami/pamięci podręcznej są dostępne w kontekście aplikacji). Jeśli nie używasz tkania w czasie kompilacji, ale zamiast tego wybierzesz tryb tkania w czasie ładowania, wystarczy mieć -javaagent:/path/to/aspectjweaver-<version>.jar w wierszu poleceń jako argument JVM. Modele ReflectiveLoadTimeWeaver i TomcatInstrumentableClassLoader są wymagane tylko w przypadku, gdy w kompilacji nie jest używane kompresowanie w czasie kompilacji, a agent tkania czasu nie jest obecny w maszynie wirtualnej, a użytkownik nadal chce mieć tkanie w czasie obciążenia za pomocą ładowania klas.

Powiązane problemy