ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
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 (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
Gö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 Deneyimleri
halilaksu
Ìý
Web İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekWeb İçin Teknoloji Geliştirmek
Web İçin Teknoloji Geliştirmek
Volkan Özçelik
Ìý
Gereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı HazırlamaGereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı Hazırlama
Cumhuriyet Ãœniversitesi
Ìý
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ği
Ali İ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 Platformu
FIT 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
Ìý
Log yönetimi ve siem
Log yönetimi ve siemLog yönetimi ve siem
Log yönetimi ve siem
Ertugrul Akbas
Ìý
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şimi
Betul Kesimal
Ìý
Implementation.pptx
Implementation.pptxImplementation.pptx
Implementation.pptx
glkabakc
Ìý
JÄ°RA'ya GiriÅŸ / Atlassian
JÄ°RA'ya GiriÅŸ / AtlassianJÄ°RA'ya GiriÅŸ / Atlassian
JÄ°RA'ya GiriÅŸ / Atlassian
Cansu 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 Ä°zlenmesi
Mustafa
Ìý
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
Gö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 Deneyimleri
halilaksu
Ìý
Web İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekWeb İçin Teknoloji Geliştirmek
Web İçin Teknoloji Geliştirmek
Volkan Özçelik
Ìý
Gereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı HazırlamaGereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı Hazırlama
Cumhuriyet Ãœniversitesi
Ìý
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ği
Ali İ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 Platformu
FIT 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
Ìý
Log yönetimi ve siem
Log yönetimi ve siemLog yönetimi ve siem
Log yönetimi ve siem
Ertugrul Akbas
Ìý
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şimi
Betul Kesimal
Ìý
Implementation.pptx
Implementation.pptxImplementation.pptx
Implementation.pptx
glkabakc
Ìý
JÄ°RA'ya GiriÅŸ / Atlassian
JÄ°RA'ya GiriÅŸ / AtlassianJÄ°RA'ya GiriÅŸ / Atlassian
JÄ°RA'ya GiriÅŸ / Atlassian
Cansu 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 Ä°zlenmesi
Mustafa
Ìý

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
Dilaver Demirel
Ìý
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
Dilaver Demirel
Ìý
Unit test
Unit testUnit test
Unit test
Dilaver Demirel
Ìý
12factor apps
12factor apps12factor apps
12factor apps
Dilaver Demirel
Ìý
Software/Yazılım Test
Software/Yazılım TestSoftware/Yazılım Test
Software/Yazılım Test
Dilaver Demirel
Ìý
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
Dilaver Demirel
Ìý
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
Dilaver Demirel
Ìý
Oracle Weblogic Server
Oracle Weblogic ServerOracle Weblogic Server
Oracle Weblogic Server
Dilaver Demirel
Ìý
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
Dilaver Demirel
Ìý
Pentaho BI
Pentaho BIPentaho BI
Pentaho BI
Dilaver Demirel
Ìý
JVM ve VisualVm
JVM ve VisualVmJVM ve VisualVm
JVM ve VisualVm
Dilaver Demirel
Ìý
Apache Maven
Apache MavenApache Maven
Apache Maven
Dilaver Demirel
Ìý
NodeJS ve MongoDB
NodeJS ve MongoDBNodeJS ve MongoDB
NodeJS ve MongoDB
Dilaver Demirel
Ìý
NodeJS Nedir
NodeJS NedirNodeJS Nedir
NodeJS Nedir
Dilaver Demirel
Ìý
Jpa
JpaJpa
Jpa
Dilaver Demirel
Ìý
Git - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim SistemiGit - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim Sistemi
Dilaver Demirel
Ìý
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
Dilaver Demirel
Ìý
Software/Yazılım Test
Software/Yazılım TestSoftware/Yazılım Test
Software/Yazılım Test
Dilaver Demirel
Ìý
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
Dilaver Demirel
Ìý
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
Dilaver Demirel
Ìý
Oracle Weblogic Server
Oracle Weblogic ServerOracle Weblogic Server
Oracle Weblogic Server
Dilaver Demirel
Ìý

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
  • 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.