[Javalist] Spring AOP advice nem fut

István Viczián viczian.istvan at gmail.com
2013. Okt. 4., P, 17:46:20 CEST


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


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