SlideShare a Scribd company logo
1 of 11
Aspect Oriented Programming
AOP
OOP’u genişleterek daha esnek hale getirmeyi sağlar. 20151223
Temel Prensipler – Çıkış Sebebi
 SoC - Separation of Concerns(İlgilerin Ayrışması)
 Modüller, aynı amaca hizmet eden kodlar
 Crosscutting Concerns(Enine Kesen İlgiler)
 Loglama,güvenlik,resources,caching,transaction
management…
Not : İlgi = Geliştirilen uygulamayı kullanan herkesin ilgilendiği veya önem verdiği herhangi bir
şey olarak tanımlanabilir. (Müşteri talebi,uygulamanın özelliği)
Avantajları
 Enine kesen ilgilerin ayrıştırılması ile kod karmasını önler, yeniden kullanım sorununu çözmeyi
sağlar, bu sayede birimler sadece kendi amacına yönelik kodları içerir
 Okunabilirliği, bakımı kolaylaştırır
 Genişletilebilir uygulama mimarisi sunar
Dezavantajları
 Süreç akışı dışında kalan aspect’ler bakım aşamasında karmaşaya sebep
olabilir(obliviousness(dikkatsizlik, bihaber olma, ilgisizlik))
Nasıl Çalışır
 AOP uygulayan bir program aspect tanımlarına göre nesnelerin, metodların ve aspectlerin
otomatik olarak birleştirilmesi ile yani ilişkilendirilmesi/dokunması(weaving) ile sağlanır.
 Buradan anlaşıldığı üzere bir tanım söz konusudur; Bu aspect tanımıdır, bu tanım ile aspectin
nereyi dinleyeceği belirtilir ve bununla birlikte aspectin tanımdaki advice gerçekleştiğinde çalışak
kodu da barındırırlar.
 Aspectlere bakarak kodun nerelerde kullanıldığını kolayca bilebiliriz
 Aspectleri kolay ve hızlı şekilde anlayabiliriz
 Diğer aspectlerden bağımsız bir şekilde değiştirebiliriz
Nasıl Çalışır?
com.sistek.prj.Operati
ons.doSomething {
…
…
…
}
Süreç Süreç
İlgi
Aspect
Before Advice Around Advice AfterAdvice
Nasıl Çalışır?
Aspect
@Before("execution(* com.sistek.prj.Operations.doSomething(..))"){
sendEmail()
}
@Around("execution(* com.sistek.prj.Operations.doSomething(..))")
@After("execution(* com.sistek.prj.Operations.doSomething(..))")
Temel Kavramlar
Spring AOP
 Spring AOP AspectJ çatısından bağımsız Java dilinde implemente edilmiş Proxy tabanlı bir
AOP çatısıdır
 Spring AOP AspectJ çatışında yer alan @Aspect anotasyonunu kullanan sınıfları aspekt
olarak iş mantığı ile harmanlayabilir.
Spring AOP’un Sınırları
 Spring AOP kullanildiginda sadece public olan metotlar join point olarak seçilebilir . Bunun
yani sira olusturulan aspektler sadece Spring nesneleri ile harmanlanabilir .
 Daha genis çapli join point ve pointcut seçimi için AspectJ çatisinin kullanimi tavsiye
edilmektedir.
DEMO
http://svn.sistek.local:3690/svn/sistek-egitim/trunk/spring-aop

More Related Content

Similar to Aspect Oriented Programming

Oracle Policy Automation ile Karar Ve Kural Otomasyonu
Oracle Policy Automation ile Karar Ve Kural OtomasyonuOracle Policy Automation ile Karar Ve Kural Otomasyonu
Oracle Policy Automation ile Karar Ve Kural OtomasyonuGökhan Engin
 
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech DeneyimleriGartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimlerihalilaksu
 
Web İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekWeb İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekVolkan Özçelik
 
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders NotlarıCBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders NotlarıTuğrul Can Şöllü
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiAli İhsan Çalışkan
 
SAP Forum 2010 Ankara - NetWeaver Teknoloji Platformu
SAP Forum 2010 Ankara - NetWeaver Teknoloji PlatformuSAP Forum 2010 Ankara - NetWeaver Teknoloji Platformu
SAP Forum 2010 Ankara - NetWeaver Teknoloji PlatformuFIT Consulting
 
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...Hakan ERDOGAN
 
Hepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends DönüşümüHepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends DönüşümüOğuzhan Aslan
 
Office 2010 Araçları
Office 2010 AraçlarıOffice 2010 Araçları
Office 2010 AraçlarıEren Caner
 
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimiYazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimiBetul Kesimal
 
Implementation.pptx
Implementation.pptxImplementation.pptx
Implementation.pptxglkabakc
 
JİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianJİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianCansu Kaya
 
SCOM 2007 R2 ile SBS 2011 İzlenmesi
SCOM 2007 R2 ile SBS 2011 İzlenmesiSCOM 2007 R2 ile SBS 2011 İzlenmesi
SCOM 2007 R2 ile SBS 2011 İzlenmesiMustafa
 

Similar to Aspect Oriented Programming (17)

Oracle Policy Automation ile Karar Ve Kural Otomasyonu
Oracle Policy Automation ile Karar Ve Kural OtomasyonuOracle Policy Automation ile Karar Ve Kural Otomasyonu
Oracle Policy Automation ile Karar Ve Kural Otomasyonu
 
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech DeneyimleriGartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
 
Web İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekWeb İçin Teknoloji Geliştirmek
Web İçin Teknoloji Geliştirmek
 
Gereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı HazırlamaGereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı Hazırlama
 
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders NotlarıCBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
 
SAP Forum 2010 Ankara - NetWeaver Teknoloji Platformu
SAP Forum 2010 Ankara - NetWeaver Teknoloji PlatformuSAP Forum 2010 Ankara - NetWeaver Teknoloji Platformu
SAP Forum 2010 Ankara - NetWeaver Teknoloji Platformu
 
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
 
Hepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends DönüşümüHepsiburada Micro Frontends Dönüşümü
Hepsiburada Micro Frontends Dönüşümü
 
Log yönetimi ve siem
Log yönetimi ve siemLog yönetimi ve siem
Log yönetimi ve siem
 
Office 2010 Araçları
Office 2010 AraçlarıOffice 2010 Araçları
Office 2010 Araçları
 
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimiYazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
 
Bilgi sis..
Bilgi sis..Bilgi sis..
Bilgi sis..
 
Implementation.pptx
Implementation.pptxImplementation.pptx
Implementation.pptx
 
JİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianJİRA'ya Giriş / Atlassian
JİRA'ya Giriş / Atlassian
 
SCOM 2007 R2 ile SBS 2011 İzlenmesi
SCOM 2007 R2 ile SBS 2011 İzlenmesiSCOM 2007 R2 ile SBS 2011 İzlenmesi
SCOM 2007 R2 ile SBS 2011 İzlenmesi
 
Isl sis
Isl sisIsl sis
Isl sis
 

More from Dilaver Demirel

More from Dilaver Demirel (15)

Git - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim SistemiGit - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim Sistemi
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Unit test
Unit testUnit test
Unit test
 
12factor apps
12factor apps12factor apps
12factor apps
 
Software/Yazılım Test
Software/Yazılım TestSoftware/Yazılım Test
Software/Yazılım Test
 
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
 
Yazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check ListYazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check List
 
Oracle Weblogic Server
Oracle Weblogic ServerOracle Weblogic Server
Oracle Weblogic Server
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
 
Pentaho BI
Pentaho BIPentaho BI
Pentaho BI
 
JVM ve VisualVm
JVM ve VisualVmJVM ve VisualVm
JVM ve VisualVm
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
NodeJS ve MongoDB
NodeJS ve MongoDBNodeJS ve MongoDB
NodeJS ve MongoDB
 
NodeJS Nedir
NodeJS NedirNodeJS Nedir
NodeJS Nedir
 
Jpa
JpaJpa
Jpa
 

Aspect Oriented Programming

  • 1. Aspect Oriented Programming AOP OOP’u genişleterek daha esnek hale getirmeyi sağlar. 20151223
  • 2. Temel Prensipler – Çıkış Sebebi  SoC - Separation of Concerns(İlgilerin Ayrışması)  Modüller, aynı amaca hizmet eden kodlar  Crosscutting Concerns(Enine Kesen İlgiler)  Loglama,güvenlik,resources,caching,transaction management… Not : İlgi = Geliştirilen uygulamayı kullanan herkesin ilgilendiği veya önem verdiği herhangi bir şey olarak tanımlanabilir. (Müşteri talebi,uygulamanın özelliği)
  • 3. Avantajları  Enine kesen ilgilerin ayrıştırılması ile kod karmasını önler, yeniden kullanım sorununu çözmeyi sağlar, bu sayede birimler sadece kendi amacına yönelik kodları içerir  Okunabilirliği, bakımı kolaylaştırır  Genişletilebilir uygulama mimarisi sunar
  • 4. Dezavantajları  Süreç akışı dışında kalan aspect’ler bakım aşamasında karmaşaya sebep olabilir(obliviousness(dikkatsizlik, bihaber olma, ilgisizlik))
  • 5. Nasıl Çalışır  AOP uygulayan bir program aspect tanımlarına göre nesnelerin, metodların ve aspectlerin otomatik olarak birleştirilmesi ile yani ilişkilendirilmesi/dokunması(weaving) ile sağlanır.  Buradan anlaşıldığı üzere bir tanım söz konusudur; Bu aspect tanımıdır, bu tanım ile aspectin nereyi dinleyeceği belirtilir ve bununla birlikte aspectin tanımdaki advice gerçekleştiğinde çalışak kodu da barındırırlar.  Aspectlere bakarak kodun nerelerde kullanıldığını kolayca bilebiliriz  Aspectleri kolay ve hızlı şekilde anlayabiliriz  Diğer aspectlerden bağımsız bir şekilde değiştirebiliriz
  • 6. Nasıl Çalışır? com.sistek.prj.Operati ons.doSomething { … … … } Süreç Süreç İlgi Aspect Before Advice Around Advice AfterAdvice
  • 7. Nasıl Çalışır? Aspect @Before("execution(* com.sistek.prj.Operations.doSomething(..))"){ sendEmail() } @Around("execution(* com.sistek.prj.Operations.doSomething(..))") @After("execution(* com.sistek.prj.Operations.doSomething(..))")
  • 9. Spring AOP  Spring AOP AspectJ çatısından bağımsız Java dilinde implemente edilmiş Proxy tabanlı bir AOP çatısıdır  Spring AOP AspectJ çatışında yer alan @Aspect anotasyonunu kullanan sınıfları aspekt olarak iş mantığı ile harmanlayabilir.
  • 10. Spring AOP’un Sınırları  Spring AOP kullanildiginda sadece public olan metotlar join point olarak seçilebilir . Bunun yani sira olusturulan aspektler sadece Spring nesneleri ile harmanlanabilir .  Daha genis çapli join point ve pointcut seçimi için AspectJ çatisinin kullanimi tavsiye edilmektedir.