28
Spring AOP Semineri Turkey JUG Lideri Senior Java Developer Bilgisayar Mühendisi Mimar Aslan www.mimaraslan.com [email protected] AOP 24 Aralık 2014 Turkey Java User Group

Maltepe Üniversitesi - Spring AOP

Embed Size (px)

Citation preview

Page 1: Maltepe Üniversitesi - Spring AOP

Spring AOP Semineri

Turkey JUG Lideri Senior Java DeveloperBilgisayar Mühendisi

Mimar Aslan

[email protected]

AOP

24 Aralık 2014

Turkey Java User Group

Page 2: Maltepe Üniversitesi - Spring AOP

• 2006, Kırgızistan Türkiye Manas Üniversitesi, Bilgisayar Mühendisliğinden mezun oldum.

• Kendimi bildim bileli kurumsal Java projelerinde yazılım geliştiricisiyim.

• Teknik yazar, eğitmen, danışman ve konuşmacıyım.

• Turkey JUG (Java User Group) ve Turkey JBUG(JBoss User Group)’ın kurucusu ve lideriyim.

• Kurumsal firmalar için yazılım danışmanlık hizmetleri vermekteyim.

• Mesleki kariyerimi yurt içi ve yurt dışında sürdürmekteyim.

Mimar Aslan kimdir?

Page 3: Maltepe Üniversitesi - Spring AOP

Teknik yazarlık serüvenim.

2010

2013 2014

20122011

2015

Page 4: Maltepe Üniversitesi - Spring AOP

www.udemy.com/u/mimaraslan

Online Video Eğitimlerim

Page 5: Maltepe Üniversitesi - Spring AOP

Bilişim Sohbetleri

www.youtube.com/user/BilisimSohbetleri

Bilişim SohbetleriMüsait oldukça her Cuma Türkiye Saat ile 21:00’da CANLI

@BilisimSohbet

Modern Advice Experimenteel Media Laboratorium Sahibi

Elektrik Elektronik MühendisiÇağdaş Öğüt

Turkey JUG Lideri Senior Java Developer Bilgisayar MühendisiMimar Aslan

Page 6: Maltepe Üniversitesi - Spring AOP

Bu seminerde neler öğreneceksiniz?

• Spring Core ile kurumsal Java projelerini

• Kurumsal projelerden kullanılan çok katmanlı mimariyi

• AOP (Aspect Oriented Programming - İlgi Yönelimli Programlama) kavramlarını

• OOP ve AOP ilişkisini

• Spring XML dosyaları ile AOP ilişkisini

• Java ile AOP ilişkisini

• AOP ile kullanılan annotation’lar

• AspectJ ve AOP ilişkisini

Page 7: Maltepe Üniversitesi - Spring AOP

• 2003’te de Spring projesinin kodları açık kaynak olarak internette paylaşıldı. Ciddi manada ilk sürümü Mart 2004 yılında çıktı.

Spring çatısı nasıl ortaya çıktı?

• 1998 ve 2000 yılları arasında kurumsal projelerin daha kolay geliştirilmesi ve yönetilmesi için Sun firması tarafından çok ciddi yatırımlar yapıldı ama yine de istenilen sonuçlara ulaşılamadı.

• Spring’in mimarı Rod Johnson, kurumsal Java projelerinde edindiği tecrübeleri içeren “Expert One-on-One J2EE Design and Development” adındaki kitabını 2002 yılında yayınladı.

Page 8: Maltepe Üniversitesi - Spring AOP

Spring sürümleri hakkında bizi bilgilendirir misiniz?

• Spring Framework 1.0.x Mart 2004

• Spring Framework 2.0.x Ekim 2006

• Spring Framework 2.5.x Kasım 2007

• Spring Framework 3.0.x Aralık 2009

• Spring Framework 3.1.x Şubat 2011

• Spring Framework 3.2.x Aralık 2012

• Spring Framework 4.1.x Aralık 2014 (Bu seminerin verildiği zamandaki son sürümü bu idi.)

• Sürümlerin yanındaki x’ler rakamları temsil etmektedir.

Page 9: Maltepe Üniversitesi - Spring AOP

Spring’in modülleri hakkında biraz bilgi verir misiniz?

Page 10: Maltepe Üniversitesi - Spring AOP

• Spring nesne tabanlı olduğundan dolayı kodlarımızı dilediğimiz an kolayca test edebilme imkânını da bize sunar.

Spring çatısını kullanmanın bize ne gibi katkıları olur?

• Spring, yazılım sektöründe kendini ispatlamıştır. Bu nedenle de dünya genelinde milyonlarca kullanıcısı vardır.

• IoC (Inversion Of Control) presnsibini kullanmaktadır. IoC sayesinde çok güçlü bir container(kap) haline gelmiştir.

• Spring çatısı, diğer API ve çatıları için organize ve entegre çalışmayı sağlayan birçok yardımcı araçlara sahiptir.

• Gereksiz exception(istisna) sınıflarını yazılımcılardan gizler. Bu soyutlama ile daha temiz bir kod yazma imkânını sağlar.

Page 11: Maltepe Üniversitesi - Spring AOP

Spring AOP nedir? Ne değildir?

• AOP'un en büyük amacı uygulamadaki modülerliği arttırmaktır. Bu sayede kod bakımı kolaylaşır ve kendini tekrar eden kodlar en aza indirilmiş olunur.

• Spring çatısının bize sunmuş olduğu bir web modülüdür.

• AOP, programın bir parçası olmayan metotların ve modüllerin merkezi bir yerde toplandıktan sonra programdan bağımsız olarak uygulanmasını sağlar.

• Projelerde AOP kullanılması zorunlu değildir ama günümüzde kurumsal projelerde kullanması artık bir ihtiyaçtır.

AOP

• Projelerde transaction, loglama ve güvenlik gibi program parçaları uygulamanın her katmanda kullanılır.

Page 12: Maltepe Üniversitesi - Spring AOP

Presentation Layer Gösterim Katmanı

Business Layer İşletme Katmanı

Persistence Layer Kalıcılık Katmanı

Services Layer Hizmetler Katmanı

Users Kullanıcılar

Data Soruces Veri Kaynakları

Services Hizmetler

External Sevices Dış Servisler

Cross - Cutting (Enine Çapraz Kesme)

Auditing (denetleme) Transaction Management (işlem yönetimi) Caching (önbellek) Exception Handling (istisna işleme) Recovery (kurtarma, geri dönüştürme) Retry (yeniden demek, tekararlamak) Security(güvenlik)

AOP’nin projelerimize entegrasyonun katkıları nelerdir?

Page 13: Maltepe Üniversitesi - Spring AOP

AOP ve OOP arasındaki ilişki nedir?

• AOP değişik tipteki nesnelere dağıtılmış bir metodun tek bir yerde korunmasıdır.

• OOP’nin temeli sınıflar ve nesnelerdir. AOP’nin temeli ise aspect (yön, bakış açısı)’dır.

• AOP’yi anlayabilmek için encapsulation (saklama, koruma, kapsülleme)’yi de çok iyi anlamak lazımdır.

• Encapsulation'ın amacı içeriği saklamak değildir sadece kontrolsüz ve gereksiz erişimlere mani olmaktır. AOP, encapsulation’ın tamamlayıcısıdır.

• AOP yaklaşımı OOP’de transaction, loglama ve güvenlik gibi alt yapısal ihtiyaçlar için kullanılır. AOP, OOP’yi tamamlar.

Page 14: Maltepe Üniversitesi - Spring AOP

AOP kavramları nelerdir?

• Aspect - Değişik nesnelere dağıtılmış metotların tek bir yerde toplanmasıdır.

• JoinPoint - Programın çalışması esnasındaki bir andır. Mesela bir metoda girmeden hemen önceki yada bir metottan çıktıktan hemen sonra gibi sadece bir anı ifade eder.

• PointCut - Çalışma anında eğer bir JoinPoint'e denk gelinirse PointCut kendisiyle önceden ilişkili kodu devreye sokar. Mesela loglama kodu istediğimiz bir esnada araya girer ve çalıştırılır.

• JoinPoint - Programın doğal çalışma seyri içerisinde aspect kodlarınızın ne zaman çalıştırılması gerektiğinin belirtilmesidir.

Page 15: Maltepe Üniversitesi - Spring AOP

• Concern - Transactions (işlemler), logging (not alma), exception handling (istisna işleme), security (güvenlik), caching (ön bellek) bunların tümüne verilen isimdir.

AOP kavramları nelerdir?

• AspectJ - Spring AOP modülü ile XML’ler üzerinden AspectJ ile de Java sınıflarından annotation’lar ile AOP işlemlerini yapmaktayız.

• Cross-Cutting Concern - Tüm katmanların hepsinin dikey olarak kesmesilmesidir ve AOP'un merkezindedir.

Page 16: Maltepe Üniversitesi - Spring AOP

• Advice - Belirli bir JoinPoint zamanında herhangi bir aspect tarafından gerçekleştirilen iştir.

before Bir isteğin hemen öncesinde bir metodu çalıştır.

after Bir isteğin hemen sonrasında bir metodu çalıştır.

afterReturning Bir metodun geri dönüş değerinden hemen sonra işletilecek metodu çalıştır.

afterThrowing Bir işlemde istisna meydana geldikten hemen sonra işletilecek metodu çalıştır.

around Bir isteğin hemen öncesinde hem de sonrasında işletilecek bir metodu çalıştır.

AOP kavramları nelerdir?

Page 17: Maltepe Üniversitesi - Spring AOP
Page 18: Maltepe Üniversitesi - Spring AOP
Page 19: Maltepe Üniversitesi - Spring AOP
Page 20: Maltepe Üniversitesi - Spring AOP
Page 21: Maltepe Üniversitesi - Spring AOP
Page 22: Maltepe Üniversitesi - Spring AOP
Page 23: Maltepe Üniversitesi - Spring AOP
Page 24: Maltepe Üniversitesi - Spring AOP
Page 25: Maltepe Üniversitesi - Spring AOP
Page 26: Maltepe Üniversitesi - Spring AOP

Sorular & Cevaplar

Page 27: Maltepe Üniversitesi - Spring AOP

seminerine katılıp

beni sabırla dinlediğiniz için sizlere çok teşekkür ederim.

Turkey JUG Lideri Senior Java DeveloperBilgisayar Mühendisi

Mimar Aslan

[email protected]

AOP

Turkey Java User Group

Page 28: Maltepe Üniversitesi - Spring AOP