[Javalist] Spring AOP advice nem fut

Gábor Garami gabor.garami at hron.me
2013. Okt. 4., P, 20:16:12 CEST


Hibanak nem hiba,  csak nem biztos, hogy ilyenkor celszeru elvarni az
aspectes mukodest. Az aspectj elvben pont arrol szol, hogy minel
lazabb csatolasok legyenek, az objektumon beluli hivas pedig by
definition nem lehet laza csatolasu.

Valszinu amugy, hogy ennek van bytekod-optimalizacios vetulete is.
Gondolj bele, amikor az objektum a sajat metodusait hivogatja, az
valami gyors ugras lesz es kesz, a kulso osztaly hivasa meg elobb el
kell engedjen egy peldany-elokeresest, mielott ugrik. Ha a belso
ugrasokhoz is ekkorat kellene kerulni, akkor minden fuggvenyhivas
koltsege nagysagrendekkel megugrana. Szoval ez nem a technologa
"hibaja" hanem by design igy mukodik a Java, es igenis illik tudni, ha
valaki AOP fejlesztesre adja a fejet.
Garami Gábor
E-mail: gabor.garami at hron.me
Tel: +36 20 235 9621
MSN: hrgy at vipmail.hu
Skype: hron84


2013/10/4 Tamás Magyar <magyusz at gmail.com>:
> Ne hibaztassuk az AOPt használó programozót azért mert adott AOP weaving
> technológia nem tud valamit. Nem hiba Servicebol magát hívni szerintem.
>
>
> On Friday, October 4, 2013, István Viczián wrote:
>>
>> Már két cégnél is voltam még nagyon régen, ahol ez felvételi kérdés volt.
>> :)
>> --
>> Viczián István
>>
>>
>> Tamás Magyar <magyusz at gmail.com> írta (2013. október 4. 1:34):
>> > AopContext.currentProxy()
>> >
>> > 2013/10/4 István Székely <istvan.szekely1 at gmail.com>:
>> >> Hali!
>> >>
>> >> Igen, ez kimaradt: <aop:aspectj-autoproxy proxy-target-class="true"/>
>> >>
>> >> Tehát CGLIB-es proxy-k vannak. A többi rész is pont úgy van, ahogy
>> >> mondod,
>> >> a() hívja b()-t, és mindkét metódus ugyanabban az osztályban van.
>> >> Először
>> >> b() private volt, de aztán public-ot csináltam belőle, nehogy az legyen
>> >> a
>> >> baj, de úgy sem megy.
>> >> [Van egy olyan forgatókönyv is, hogy b() absztrakt, és egy másik
>> >> osztályban
>> >> van implementálva, és akkor sem működik.]
>> >>
>> >> Nem emlékszel, mi volt a megoldás? A natív AspectJ-t kihagynám, ha
>> >> lehet.
>> >>
>> >> Üdv,
>> >> Stivi
>> >>
>> >>
>> >> 2013. október 4. 0:11 Ize írta, <sicher at freemail.hu>:
>> >>
>> >>> Hali!
>> >>>
>> >>> Nekem valamikor regen akkor volt ilyen problemam, ha a metodus
>> >>> osztalyon
>> >>> belulrol hivodott (hiaba volt public). Mitha osszefuggene a dolog a a
>> >>> proxy-based AOP-pal (tippem szerint ezt hasznalod).
>> >>> A public nem mindegy, mert a proxy-s csak azzal mukodik,
>> >>> private/protected-hez native AspectJ weaving kell.
>> >>>
>> >>> Udv.:
>> >>>   Ize
>> >>>
>> >>>
>> >>> On 2013. 10. 03. 16:24, István Székely wrote:
>> >>>
>> >>> Sziasztok!
>> >>>
>> >>> Van egy annotációm, amit metódusok megjelölésére használok. Van egy
>> >>> Spring
>> >>> AOP-s aspect, ami úgy van megadva, hogy bizonyos csomagban és az
>> >>> alcsomagokban az annotációval megjelölt metódusokra fusson le egy
>> >>> @Around
>> >>> advice.
>> >>>
>> >>> Tehát valami ilyesmi:
>> >>>
>> >>> @Aspect
>> >>> public class A {
>> >>>     @Pointcut("within(com.x.y.z..*) && @annotation(com.a.b.C)")
>> >>>     public void p() {}
>> >>>     @Around("p()")
>> >>>     public void advice(...) { ... }
>> >>> }
>> >>>
>> >>> Adott egy osztály, amiben van két metódus, a() és b(), közvetlenül
>> >>> egymás
>> >>> alatt definiálva, és mindkettő public (bár ez talán mindegy is). Ha az
>> >>> annotációt a-ra teszem, akkor szépen lefut az advice, ha b-re, akkor
>> >>> pedig
>> >>> nem.
>> >>>
>> >>> Hogyan lehetséges ez, és főleg, mi a megoldás?
>> >>>
>> >>> Üdv
>> >>> Stivi
>> >>
>> >>
>> >>
>> >> _______________________________________________
>> >> Javalist mailing list
>> >> Javalist at lists.javaforum.hu
>> >> http://lists.javaforum.hu/mailman/listinfo/javalist
>> >>
>> > _______________________________________________
>> > Javalist mailing list
>> > Javalist at lists.javaforum.hu
>> > http://lists.javaforum.hu/mailman/listinfo/javalist
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
>
>
>
> --
> Sent from Gmail Mobile
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>


További információk a(z) Javalist levelezőlistáról