0 komentáře “Spring AOP – Pozor na AspectJExpressionPointcut!

  1. Aha, myslis instanci objektu, ktere implementuji rozhrani org.springframework.context .ApplicationContext.

    Ty pointcuty napriklad pro transakce netestujeme nijak explicitne, navic v novem kodu pouzivame anotace pro demarkaci transakcniho chovani. Jine typy aspektu, v nasem pripade mame pomoci AOP udelane napriklad listenery, licencni kontroly a tusin audit, to lze udelat celkem snadno. V testu tam programove vrazim testovaci listener a pokud se mi zavola, tak je jasne, ze je ten aspekt namapovany spravne.

    Jeste me napadlo v souvislosti s temi transakcemi, tam by to slo udelat tak, ze by se clovek povesil v testu na PlatformTransactionManager a tam zkontroloval, ze se zavola getTransaction commit pripadne rollback. V rychlosti me napada, ze to zaveseni pro testy muze byt budto zase pomoci AOP 😉 a nebo si tam muzu udelat specialni implementaci PlatformTransactionManager, ktera to bude delegovat na skutecny TM a zaroven notifikovat nejake listenery.

  2. No rozdil je ten, že v testovacim, diky tomu jak Spring testy funguji je tech aplikacnich kontextu hafo. Tzn. drzi se tam ta shadowMapa nekolikrat. V produkci bude zridka vice aplikacnich kontextu nazivu naraz. Jenze, kdyz si zase uvedomim, ze jsem si timhle zpusobem proxoval pouze par trid (s rezervou do 20 trid), tak pri masivnejsim pouziti by to mohlo stejne znamenat potiz.

    Jeste jsem si rikal, jestli jsem nenapsal spatne tu expression, ze by mi to oproxovalo vic trid nez jsem chtel, ale ani po blizsim zkoumani mi nepripadlo. Btw. jak testujes AOP pointcuty? Napr. transakcni aspekty jsou ve vysledne aplikaci dost dulezite, ale hloupe se testuji. Uvazoval jsem o ziskani intanci bean a test na implementaci rozhrani SpringProxy nebo Advised, ale jeste jsem to nedomyslel do konce.

    Jen mne zajima tvůj (vas vsech 🙂 ) pristup.

  3. To je nemile zjisteni. Honzo, nepochopil jsem v cem se bude tenhle memory leak lisit v produkcnim nasezeni od toho testovaciho. Jestlize tam nemaji weak refernce, tak to GC neuklidi v kazdem pripade…