Spring AOP sadece Java kullanılarak gerçekleştirilmiştir. Herhangi bir özel derleme işlemine gerek yoktur. Spring AOP, sınıf yükleme hiyerarşisini kontrol etme gereksinimi duymaz ve J2EE web container veya uygulama sunucusu kullanımı için uygundur.
Spring, güncel olarak sadece yordam işletimi birleşim noktalarını (Spring beans üzerindeki yordam işletimini tavsiye eder) destekler. Field interception gerçekleştirilmemiş olmasına rağmen Spring AOP çekirdek API’lerini bozmadan field interception desteği eklenebilir. Eğer alan erişiminin ve birleşim noktalarının tavsiye edilmesi gerekiyorsa, AspectJ gibi bir dil kullanılabilir.
Spring’in AOP’a yaklaşım tarzı diğer çoğu AOP çatısından farklılık gösterir. Amaç, en kapsamlı AOP gerçekleştirimini (Spring AOP’un gerekli yeterliliğe sahip olmasına rağmen) sağlamak değil; daha cok, enterprise uygulamalarında karşılaşılan genel problemlere çözüm üretmeye yardımcı olmak için AOP gerçekleştirimi ile Spring IoC arasında sıkı bir bütünleştirme sağlamaktır.
Örneğin; Spring’in AOP işlevselliği normal durumlarda Spring IoC container ile arasında bağ kurmak amaçlı olarak kullanılır. İlgilerin ayarlamaları normal bean tanımları sözdizimi (bu işlemin güçlü bir “autoproxying”(oto-vekalet) yeteneğine izin vermesine rağmen) kullanılarak yapılmıştır: bu diğer AOP gerçekleştirimleriyle arasındaki can alici bir farklılıktır. Spring AOP, AOP uyumlu J2EE uygulamalarında karşılaşılan çok sayıda problem için çok iyi derecede çözüm sağlar.
Spring AOP hiçbir zaman AspectJ ile kapsamlı AOP çözümleri sağlamak için yarışma uğraşmamıştır. Spring gibi bir proxy(vekil)-tabanlı çatı ile AspectJ gibi bir full-blown çatı değerli yapılardır ve rekabet yerine birbirini tamamlayıcı niteliktelerdir.
Baran BAYRAM
23.07.2010 – Ankara