spring aop pointcuty

Odpowiedz Nowy wątek
2014-12-17 12:33
0

cześć. spring aop wywołanie metody np.
@Pointcut("execution(Integer BookBusiness.update(..)) && args(book)")

jest możliwe springowymi desygnatorami (czyli np. within, target itd..) dodać ograniczenie skąd zostaje wywołana metoda BookBusiness::save?
np. z konkretnej klasy, klasy w pakiecie albo np. nie z konkretnej klasy ?

np.@Pointcut na wywołanie BookBusiness::save tylko z klasy BookTranslationsService.

nawet z pomocą sobie w tym celu sobie własnymi adnotacjami (czyli desygantory z @costam)


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
edytowany 1x, ostatnio: Koziołek, 2014-12-17 14:17

Pozostało 580 znaków

2014-12-17 12:38
1

?

expression="execution(* jakis.super.fajnypackage.SuperKontroller.*(..)))"

Tu wpinam się w wywołanie jakiejkolwiek metody w kontrolerze:

 <aop:config>
    <aop:config>
        <aop:aspect ref="logger">
            <aop:pointcut id="logger-point" 
                expression="execution(* spring.showcase.form.FrontController.*(..)))"/>
            <aop:after method="logTimeToConsole" pointcut-ref="logger-point" />
        </aop:aspect>
    </aop:config>

"Perhaps surprisingly, concurrent programming isn’t so much about threads or
locks, any more than civil engineering is about rivets and I-beams."
edytowany 2x, ostatnio: niezdecydowany, 2014-12-17 12:40

Pozostało 580 znaków

2014-12-17 13:35
0

no dobrze, ale porada z takim pointcutem zadziała Ci zawsze jak zostanie wywołana jakakolwiek
metoda w FrontControllerze (albo SuperKontrollerze) nie patrząc na to co ją wywołało.

mi trzeba ograniczenie, że np.
metoda SuperSerwis::zrobCostam zostało wywołane z klasy SuperKontroller


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
"metoda SuperSerwis::zrobCostam zostało wywołane z klasy SuperKontroller" - no, to odpalasz ten logger dla wywołań z supperkontroller który zgadza się z wyrażeniem w expression, - ew. mój mózg nie rozumie(bardzo prawdopodobne.) - niezdecydowany 2014-12-17 13:49

Pozostało 580 znaków

2014-12-17 14:22

Spring ControlFlow pozwala na takie sztuczki (przy czym daje informacje o klasie wołajacej, ale nie o instancji). I jest to cecha wszystkich APOów opartych o proxy, że nie ma informacji o wywołującym.

ps. zawsze pozostaje analiza stacktrace :)

edytowany 1x, ostatnio: Koziołek, 2014-12-17 14:23

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0