2011-01-16 10 views
8

Po przejrzeniu schematu AOP, jestem przytłoczony sposobami, w jaki sposób i jak go użyć w moim projekcie wiosennym.Co jest najczęstszym zastosowaniem AOP w projekcie wiosennym

Chciałbym użyć go jako systemu dzienników kontroli wszystkich logiki finansowej. To po prostu wydaje się łatwe do zintegrowania. Ale chciałbym usłyszeć twoje zdanie na ten temat.

Pytanie brzmi - jakie inne zastosowania powinienem rozważyć, które są wspólne dla tego wzoru? Nie miałbym nic przeciwko refaktoryzacji mojej obecnej logiki do użycia z AOP, o ile jest to korzystne.

+2

Istnieje nieco podobne pytanie: "Jaki aspekt jest dobry dla". http://stackoverflow.com/questions/4313789/what-is-aspectj-good-for – Ralph

Odpowiedz

9

Najpopularniejszym zastosowaniem jest prawdopodobnie deklaratywna obsługa transakcji za pomocą @Transactional.

7

Oprócz logowania/audytu i deklaratywnej obsługi transakcji, o której wspomniał Axel, powiedziałbym, że inne użycie AOP jest jako przechwytującym żądania. Na przykład, powiedzmy, że potrzebujesz przechwycenia wszystkich żądań przychodzących z serwera, abyś mógł coś z nim zrobić (może to być śledzenie, która aplikacja wysyła zapytanie do innej aplikacji lub bazy danych itp.).

+0

Jest to również możliwe przy użyciu HandlerInterceptor i HandlerInterceptorAdoptor – Prateek

1

Używanie AOP do protokołowania kontroli jest doskonałym zastosowaniem AOP. Możesz go wyłączyć do testowania i zmienić w miarę zmian wymagań w produkcji.

Jedynym minusem w tym przypadku jest to, czy planowałeś wykonać dziennik kontroli za pomocą SQL. Może być bardziej wydajne wdrażanie tego rodzaju kontroli jako wyzwalaczy bezpośrednio w DB.

1

Jako odpowiedź nieco odmienna od tej, którą powiedział @Axel, użycie jej do automatycznego przechwytywania wszystkich połączeń dostępu do danych i do właściwego stosowania transakcji jest fenomenalne. Mam swój zestaw, aby zaimplementować wszystkie wywołania mojego pakietu dao, które nie zaczynają się od "get" w transakcji, a następnie wszystko, co zostało wykonane w metodzie zaczynającej się od "get", jest traktowane jako tylko do odczytu. To fantastyczne, ponieważ oprócz początkowej konfiguracji, nie muszę się o to martwić, wystarczy przestrzegać konwencji nazewnictwa.

2

Możesz użyć AOP dla swoich problemów związanych z bezpieczeństwem, na przykład zezwalaj/nie zezwalaj na dostęp do metod. Innym zastosowaniem aop jest testowanie wydajności aplikacji.

+1

W celu wykonania dostępu do metody allow/dissalow, myślę, że Spring Security jest lepszym wyborem niż AOP. –

7

Najbardziej powszechnym zastosowaniem jest sytuacja, w której aplikacja dotyczy przekrojów, czyli fragment logiki lub kodu, który zostanie zapisany w wielu klasach/warstwach.

I to może się różnić w zależności od potrzeb. Niektóre bardzo częste przykłady te mogą być:

  1. Transaction Management
  2. Logging
  3. Exception Handling (zwłaszcza gdy może chcesz mieć szczegółowe ślady albo mieć jakiś plan odzyskania z wyjątkami)
  4. aspektów bezpieczeństwa
  5. Instrumentation

nadzieję, że pomoże.

Powiązane problemy