21. ledna 2009

Spring AOP: Dynamic Proxies vs. CGLib proxies

Pokud jste se někdy více ponořily do AOP resp. vytváření AOP proxy objektů ve Springu, tak jste určitě museli řešit, jaký přístup vlastně zvolit - zda vytvářet proxy objekty pomocí knihovny cglib nebo pomocí JDK.

Oba přístupy mají svoje specifika resp. výhody nebo nevýhody - zde je odkaz na článek, který to celé pěkně shrnuje.


Pokud všechny objekty inicializuje Spring kontejner, tak pak je vytváření AOP proxy objektů zcela automatické (např. pro řízení transakcí) a programátor se víceméně nemusí o nic starat. Někdy je ale potřeba mít vytvořené AOP proxy kolem objektů, které Spring nemá pod kontrolou, např. doménové objekty, které vytváří ORM knihovna nebo nějaké vlastní struktury, kde používáte new.

Spring nabízí následující dvě možnosti řešení:

Více o obou možnostech je uvedeno v dokumentaci ke Springu - Programmatic creation of @AspectJ Proxies a Using AspectJ to dependency inject domain objects with Spring.

Žádné komentáře: