AspectJ to, z braku lepszego słowa, "czysty" framework Aspekt. Kryteria polegają na tym, że może być szeroko stosowany w różnych okolicznościach. Dowolny aspekt, na dowolnej klasie, w dowolnym czasie.
To powiedziawszy, technika aspektu przechwytywania i pakowania wywołań metodowych, znalazła swój sposób wszechobecny w Javie. Jednak tendencja do specjalizacji ogólnej koncepcji aspektu do określonych celów.
Bardzo wczesny "aspekt" został dokonany dzięki wczesnym funkcjom EJB. Wymagało to użycia plików XML w celu rozszerzenia klas i interfejsów, tak aby kontener mógł tworzyć obiekty proxy, które zawijałyby inwokacje metod w kontekstach transakcji. To zawijanie metod jest pojęciem aspektowym, ale wczesna specyfikacja EJB oferowała jedynie zdolność do bardzo konkretnego zastosowania zarządzania transakcjami.
Pojawienie się adnotacji w Javie 1.5 otworzyło tę koncepcję augmentacji programowania zorientowanego na aspekt.Nie jest tak, że potrzebujesz adnotacji, aby to włączyć, ale po prostu sprawia, że struktury są znacznie łatwiejsze w użyciu, ponieważ adnotacje eliminują zewnętrzną konfigurację meta-danych (używając, być może, plików XML).
Obecnie wiele systemów Java wykorzystuje koncepcje programowania zorientowanego na aspekt, zazwyczaj poprzez odbicie i adnotacje, w celu wdrożenia pewnych funkcji. Niezależnie od tego, czy jest to iniekcja typu, metody, sprawdzanie poprawności itp.
Kluczowym elementem tego wszystkiego jest pewien mechanizm przechwytywania wywołania metody. AspectJ pracował, zmieniając docelową klasę w locie, zamiast wtrącać środkowego mężczyznę. EJB działa poprzez tworzenie serwerów proxy na interfejsach (coś, co można zrobić po wyjęciu z pudełka w Javie), a następnie, gdy program prosi kontener o instancję, zapewnia serwer proxy z prawdziwą instancją.
Tak więc, aby włączyć "ogólne" AOP, wszędzie, przez cały czas, na pewno potrzebujesz czegoś szerokiego, jak AspectJ. Ale aby uzyskać wiele korzyści z tego, nie musisz posuwać się tak daleko. Prosta klasa Factory i interfejs mogą łatwo wykonać tę pracę.
Tak, oczywiście. Nie potrzebujesz nawet innego frameworka (np. Spring AOP). W teście czasu AspectJ nie przybierał rozpędu przy okazji. Atrybuty + odbicie mogą na przykład być sposobem na wykonanie AOP dla frameworka. –
tak dobre pytanie .. możemy napisać rodzaj refleksji kodu i użyć wyrażenia regularnego, aby wywołać metody oparte na instrukcjach jak przed, po i wokół .. możemy obejść to, ale potrzebuje trochę więcej czasu .. –
alrite dzięki chłopaki. wygląda na to, że mam dość długą drogę, bo refleksja i takie (związane z introspekcją) są na chwilę poza moim zasięgiem. lol Przypuszczam, że innym sposobem zadawania mojego pytania byłoby przekonwertowanie (prostego) programu z kodowaniem AspectJ do programu czysto Java tylko z jak najmniejszymi modyfikacjami? – user3578836