Spring Application Framework e Giriş

Benzer belgeler
Spring Application Framework Harezmi Bilişim Çözümleri

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

Spring Framework Eğitimi

Spring ve Hibernate Entegrasyonu

Nesne Oluşturma Sırasının Tanımlanması Otomatik Veri Tipi Dönüşümü Tekil Nesneler ve Bean Scope Scope Bazlı Nesnelerin Enjeksiyonu Tanımlanabilir

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

JBoss Seam Next Generation Integration Framework

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Spring Security Framework Harezmi Bilişim Çözümleri

Java EE 5 Teknolojileri Jboss Seam

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

.com. Özcan Acar 2009 Kurumsal Java.com

Rahman USTA Editör Altuğ B. ALTINTAŞ Papatya Yayıncılık Eğitim

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

ÖZGÜR YAZILIMLAR İLE J2EE

Client Server Database

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

Üst Düzey Programlama

MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme

1. Bölüm Spring'e Giriş

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Üst Düzey Programlama

Swing ve JDBC ile Database Erişimi

Spring Framework Eğitimi

Web Uygulamaları Mimarileri ve Güvenliği

YAZILIM ÜRÜN HATTI DEĞĐŞKENLĐĞĐNĐN DENETĐM ÇEVRĐMĐ ĐLE ELE ALINMASI

Ant + Ivy + SVN + CruiseControl ile Yazılım Geliştirme Yaşam Döngüsü. Kenan SEVİNDİK

EGE ÜNĐVERSĐTESĐ BĐLGĐSAYAR MÜHENDĐSLĐĞĐ SUNUCU YAZILIM TEKNOLOJĐLERĐ LABORATUAR PROJESĐ

JBoss Seam. Melih Sakarya

İçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır.

ENTERPRISE JAVA. Alper AKALIN

MVP ve Mediator ile Loose Coupled, Modüler UI Geliştirme

Üst Düzey Programlama

Spring Giriş Eğitimi

1 FULL STACK DEVELOPMENT NEDIR? 1 Nasıl Full Stack Developer Olurum? 2

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

COĞRAFİ BİLGİ SİSTEMLERİ SERVER MİMARİSİ SERVER UYGULAMA GELİŞTİRME EĞİTİMİ

YZM 3215 İleri Web Programlama

LINQ (Temel Kavramlar)

19 Şubat 2016 Cuma

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

RoboGuice ve Android Annotations ile Verimli Android Uygulama Geliştirme Emrah Ayanoğlu, Onur Özcan, Alperen Eraslan. Inet-TR 12 9 Kasım 2012

Üst Düzey Programlama

Üst Düzey Programlama

Veritabanı. Ders 2 VERİTABANI

Üst Düzey Programlama

Spring Framework Eğitimi

Mobil Cihazlardan Web Servis Sunumu

Güvenlik Java ve Web Uygulama Güvenliği

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

Veritabanı İşlemleri

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

1 GİRİŞ 1 Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

C# nedir,.net Framework nedir?

Kurulum 14 FTP ye Bağlanmak ve Dosyaları Atmak 14 Veritabanı Oluşturulması ve Bağlanıp Kurulumun Tamamlanması 15

İçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır

GittiGidiyor ve Açık Kaynak Kodlu Yazılımlar

Java Programlama Giriş

TeamBase5 BELEDİYE İLETİŞİM MERKEZİ SIEMENS

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

NETLE E-DEFTER NEDİR?

İnnova dan, tamamen ölçülebilir, KPI ve SLA anlaşmaları ile garanti altına alınmış yönetilebilir SAP hizmet modeli

Java Temel Özellikleri

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

YZM 3215 İleri Web Programlama

1 REACT (REACTJS) GIRIŞ

İnternet Programcılığı

İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ SÖZLEŞMELİ BİLİŞİM PERSONELİ SINAVINA BAŞVURACAKLAR İÇİN DUYURU

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

Java. Hakkımızda. Java Eğitimi

«BM364» Veritabanı Uygulamaları

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

ESİS Projesi. Kaynaklar Bakanlığı

Öğr. Gör. Serkan AKSU 1

Lecture 11: Generics

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

Basit bir web uygulaması

Selsoft Academy Eğitim Kataloğu

Spring için Acegi Güvenlik Sistemi. Hazırlayan : Akif Burak Tosun Hacettepe Universitesi İletişim: thunder_burak@hotmail.

10 yıllık sektör deneyimimiz ve yazılım teknolojileri alanında uzmanlaşmış eğitmen kadromuzla, size, ekibinize ve yazılım kültürünüze değer katacak

Bilgi Güvenliği Denetim Sürecinde Özgür Yazılımlar. Fatih Özavcı Bilgi Güvenliği Danışmanı

MaestroPanel Kurulum

Kurumsal Yönetim Sistemleri Sistemleri

API geliştiricileri. Web server ile yapılan entegrasyonun neticeleri. API Dokumantasyonu

EGE ÜNİVERSİTESİ. Enterprise Java Beans ve Java Persistence API. Grup Üyeleri

Bilişim. Elektronik Belge Yönetim Sistemi

Selsoft Eğitim Kataloğu

VERİ TABANI UYGULAMALARI

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Sizin başarınız için çalışıyorlar


Asp.Net Veritabanı İşlemleri

Model Tabanlı Geliştirmede Çevik Süreç Uygulanması

Özgür Yazılımlar ile VoIP Denetimi. Fatih Özavcı Bilgi Güvenliği Danışmanı

IDE4DB Veritabanı Geliştirme Platformu Bitirme Projesi Sunumu

Film Arşiv Sistemi. Yazılım Tasarım Belgesi

YZM 3215 İleri Web Programlama

.com. Kurumsal Java. Özcan Acar com

Transkript:

Spring Application Framework e Giriş

Ajandamız Spring Nedir? Spring i Öne Çıkaran Özellikler Gelişim Süreci Spring i Oluşturan Modüller ve Spring Mimarisi Spring deki Temel Teknolojiler IoC Container ve Dependency Injection Aspect Oriented Programlama Altapısı Veri Erişim Altyapısı ve Transaction Yönetimi Birim Testleri Altyapısı Spring Web MVC

Spring Öncesi Dönemin Bir Özeti

Spring Nedir? Enterprise Java uygulamalarını kolay, hızlı ve test edilebilir biçimde geliştirmek ve monolitik uygulama sunucularının dışında ortamlarda da çalıştırabilmek için ortaya çıkmış bir framework tür.

Spring i Öne Çıkaran Özellikler POJO tabanlı bir programlama modeli sunar. EJB artık bir implementasyon tercihi olmuştur. Program to interface yaklaşımını temel ilke kabul etmiştir. İstilacı değildir! Uygulama kodunun framework e bağımlı olmasına gerek duyulmaz. Test edilebilirlik her noktada ön plandadır. Modüler bir frameworktür. Sadece ihtiyaç duyulan modüller istenilen kapsamda kullanılabilir.

Spring in Gelişim Süreci Rod Johnson 2002 sonlarında Expert One on One J2EE Design and Development kitabını yazdı. Şubat 2003 de Spring sourceforge da açık kaynaklı bir proje oldu. İlk sürüm Mart 2004 de çıktı. 2004 de Interface21 kuruldu, 2007 de SpringSource a dönüştü.

Spring i Oluşturan Modüller

Spring Runtime Mimarisi

Spring deki Temel Teknolojiler IoC Container Resource Yükleme ve Event Yönetimi AOP Veri Erişim Katmanı Birim Testleri Altyapısı Web & MVC Güvenlik Uzaktan Erişim(Remoting)

IoC Container ve Dependency Injection

IoC Container ve Dependency Injection IoC Container Nesneler ve Sınıflar: En temel yapı taşları Sınıflardan nesneler oluşturuluyor ve bunların bir araya getirilmesi ile de çalışan bir sistem ortaya çıkıyor. Spring Container nesneleri oluşturma ve bir araya getirme işine sistematik bir yol sunmaktadır.

IoC Container ve Dependency Injection

IoC Container ve Dependency Injection Bean tanımları oluşturulur ve diğer bean lara olan bağımlılıkları belirtilir. Spring Container bean ları oluşturur bu tanımlara göre bağımlılıkları bean lara enjekte eder Bağımlılık yönetimi sınıfların kendilerinden container a geçmiştir Inversion of Control

IoC Container ve Dependency Injection Dependency Injection Yöntemleri Constructor Injection Setter Injection Hangisi? Tam olarak initialize edilmiş nesneler yaratma Constructor injection Tekrar konfigüre edilebilirlik Setter injection Bazen tercih sizden önce yapılmıştır; Legacy kodlar

IoC Container ve Dependency Injection BeanFactory == Spring IoC Container Factory pattern ına iyi bir örnektir. Bean tanımları = Konfigürasyon metadata Neden...Bean? Spring managed bean Container konfigürasyon metadata formatından bağımsızdır. XML Java Annotations Container nasıl oluşturulur? Programatik ve dekleratif

IoC Container ve Dependency Injection ApplicationContext, BeanFactory nin gelişmiş halidir. Bean post processing, TX, AOP gibi pek çok ilave kabiliyeti sunar. BeanFactory mi ApplicationContext mi? Çoğu zaman ApplicationContext i oluşturmak için dekleratif yol izlenir. Web.xml, contextconfiglocation ContextLoader ve ContextLoaderListener

Resource Yükleme ve Event Yönetimi

Spring ve Aspect Oriented Programlama

Spring ve Aspect Oriented Programlama AOP: değişik tip ve nesnelere dağılmış olan bir fonksiyonun tek bir yerde encapsule edilerek yapılan programlamadır. OOP da yapı taşları: sınıf ve nesneler AOP da yapı taşı: aspect OOP u tamamlayan bir yaklaşım sunar.

Spring ve Aspect Oriented Programlama TX yönetimi, loglama, güvenlik gibi altyapısal ihtiyaçlar en iyi AOP ile çözülür. Spring in en temel bileşenlerinden birisidir. Spring, hem kendi AOP framework ünü, hem de AspectJ yi sunmaktadır. Spring AOP: proxy tabanlı bir aspect oriented programlama framework üdür.

Temel AOP Kavramları Aspect: değişik nesnelere dağılmış fonksiyonun tek bir noktada toplanmış halidir. Join point: programın çalışma esnasındaki bir andır. Metod a girmeden önceki an Bir exception fırlatırken, Metod çıkışı, Bir field a erişim anı vs. Pointcut: join point le eşleşen bir predicate dir. (pointcut expression lar)

Temel AOP Kavramları Advice: Belirli bir join point de herhangi bir aspect tarafından gerçekleştirilen aksiyondur. Weaving: Aspect ve sınıf kodlarının bir birleştirilmesi işlemidir. Derleme, sınıfların yüklenmesi veya uygulamanın çalışması sırasında yapılabilir.

Spring AOP un Özellikleri Tam bir AOP çözümü olma iddiasında değildir. AOP ve IoC Container arasında sağlam bir entegrasyon kurmayı hedeflemiştir. Sadece method execution join point leri destekler.

Spring AOP un Özellikleri Proxy tabanlıdır JDK proxy, default CGLIB proxy AspectJ ile entegredir.

Interceptor Mekanizmasının Çalışma Şekli İstemci İstemci proxy yi çağırır Interceptor chain in sonunda hedef nesne metodu çağırılır AOP proxy Proxy interceptor chain i uyandırır Hedef Nesne Security intercep tor Auditing intercep tor TX intercep tor

Spring ve Aspect Oriented Programlama Aspect konfigürasyonları XML veya annotasyonlar vasıtası ile yapılabilir. Spring AOP ve AspectJ her ikisi de beraber kullanılabilir. Ne zaman Spring AOP, ne zaman AspectJ kullanmalıyız? Spring tarafından yönetilmeyen bean larda Method execution joinpoint dışında kullanım ihtiyacı olduğunda AspectJ kullanılmalıdır.

Spring ile Veri Erişimi

Spring ile Veri Erişimi Spring kapsamlı bir transaction yönetim altyapısına sahiptir. Değişik teknolojiler için kullanımı kolay ve standart bir veri erişim desteği sunar. JDBC ile JdbcTemplate ORM araçları ile HibernateTemplate JpaTemplate... Değişik veri erişim teknolojilerinin exception hiyerarşilerini standard bir exception hiyerarşisine çevirir.

JDBC ile Veri Erişimi JDBC ile adım adım veri erişimi: Veritabanı bağlantı parametrelerinin belirtilmesi ve bağlantının kurulması JDBC Statement ın oluşturulması Oluşturulan Statement ın derlenip çalıştırılması Dönen ResultSet üzerinde işlem yapan bir döngünün kurulması Bu döngü içerisinde her bir kaydın işlenmesi Meydana gelebilecek hataların ele alınması Transaction ın sonlandırılması ve veritabanı bağlantısının kapatılması

JDBC ile Veri Erişimi JdbcTemplate temel yapı taşıdır. JDBC katmanı JdbcTemplate üzerine kurulmuştur; NamedParameterJdbcTemplate, SimpleJdbcTemplate, SimpleJdbcInsert, SimpleJdbcCall, StoredProcedure... Çalışması için DataSource nesnesine ihtiyaç vardır.

JDBC ile Veri Erişimi Uygulama geliştiricilerin JdbcTemplate ile çalışırken sadece callback interface yazmaları yeterlidir. ThreadSafe dir, birden fazla nesne tarafından kullanılabilir.

ORM ile Veri Erişimi Entegre bir transaction yönetim altyapısı üzerinden çalışır. JDBC işlemleri ile ORM işlemlerini aynı TX içerisinde beraber kullanabilirsiniz. Ortak bir veri erişim exception hiyerarşisi sunar. Entegrasyon birim testlerinin çalıştırılmasını kolaylaştırır.

Hibernate ile Veri Erişimi Hibernate için gerekli kaynakların yönetimi için esnek bir altyapı sunar. LocalSessionFactoryBean JNDI üzerinden SessionFactory nesnesine erişim; JndiObjectFactoryBean

Hibernate ile Veri Erişimi HibernateTemplate Hibernate Session ın sunduğu metodları sunar. Hibernate Session ın sağlıklı biçimde açılıp, kapatılmasını ve TX e dahil olmasını garanti eder. Hibernate Session a her zaman doğrudan erişim imkanı sağlar; (callback interface)

Spring ve Transaction Yönetimi Değişik Transaction API leri üzerine kurulmuş tek ve daha basit bir transaction programlama API si sunar. Spring in değişik veri erişim yöntemleri ile tam manada entegre çalışmaktadır. Global ve lokal transactionları destekler.

Spring ve Transaction Yönetimi PlatformTransactionManager temel sınıftır. HibernateTransactionManager dan JtaTransactionManager a geçiş için sadece bean tanımlarında değişiklik yeterlidir. Dekleratif ve programatik TX yönetimi mümkündür.

Dekleratif Transaction Yönetimi Altında Spring AOP yatmaktadır. Kullanmak için AOP bilmenize gerek yoktur! Her tür platformda çalışabilir. Kendinize özgü rollback kuralları tanımlayabilirsiniz. Transaction öncesinde ve sonrasında size özgü kod çalıştırabilirsiniz.

Spring ve Transaction Yönetimi Transaction yönetimi için gerçekten bir uygulama sunucusuna gerek var mıdır? Global transaction ihtiyacı durumunda uygulama sunucusuna ihtiyacınız olabilir. (Bu durumda standalone tx manager lar da bir alternatif olabilir.) Birden fazla veri kaynağının senkronizasyonu söz konusudur. EJB ve CMT bir çözümdür, ancak sizi daha ilk andan itibaren JTA ya mahkum eder.

Spring ve Transaction Yönetimi Pek çok uygulama da lokal transactionlar yeterlidir. Tek bir veri kaynağı söz konusudur. Spring in PlatformTransactionManager soyutlaması sayesinde uygulamanız lokal transaction lardan global transaction lara transparan biçimde geçiş yapabilir.

Spring ve Transaction Yönetimi Spring ile transaction yönetimi hem en alt düzeyde hem de en üst düzeyde gerçekleştirilebilir. Üst düzey: Değişik veri erişim teknolojileri için benzer yapıda Template sınıfları kullanılır. JdbcTemplate, HibernateTemplate, JpaTemplate... Alt düzey: Utility sınıfları ile Spring tarafından yönetilen veri kaynaklarına erişim, bunları senkronize edilmesi sağlanır. DatasourceUtils,SessionFactoryUtils, EntityManagerUtils...

Spring ve Test Driven Progranlama

Spring ve Test Driven Progranlama Testler, birim ve entegrasyon testleri kurumsal yazılım geliştirmenin temel bir parçasıdır. Geliştirme ortamı ve altyapı, testlerin kolay yazılır ve çalıştırılabilir olmasını sağlamalıdır.

Test için zamanımız yok! Kısır Döngüsü Stre s Test yazma ve çalıştırma

Spring ve Test Driven Progranlama Entegrasyon testlerinin standalone ortamda yazımı ve çalıştırılması ile: ApplicationContext i oluşturan bean tanımlarının doğru yapılıp yapılmadığının kontrolü sağlanır. JDBC ve ORM araçları ile veri erişiminin testi yapılır. SQL, HQL sorgularının, entity mapping lerin kontrolü yapılır.

Spring TestContext Framework Annotasyonlar ve generics üzerine kurulu bir test altyapısıdır. JUnit 3.8, 4.4 ve TestNG desteği vardır. Convention over configuration ön plandadır.

Spring TestContext Framework ApplicationContext yönetimi ve cache desteği sağlar. TestCase içerisinden ApplicationContext e erişmek için ApplicationContextAware arayüzünü implement etmek yeterlidir. Test metodlarının transactional context içerisinde çalıştırılması mümkündür.

Spring TestContext Framework Temel Elemanları TestContext Her bir testin çalıştırıldığı context i encapsule eder. Asıl test framework ünden (JUnit, TestNG) habersizdir. TestContextManager TestContext nesnelerini ve testlerin çalışması sırasında meydana gelen event leri yönetir. TestExecutionListener DependencyInjectionTestExecutionListener, TransactionalTestExecutionListener gibi hazır nesneler vardır.

Spring Web MVC Framework

Spring Web MVC Framework DispatcherServlet etrafında kurulu bir frameworktür. Front Controller pattern ına iyi bir örnektir. POJO tabanlı bir programlama modeli sunar. Ayarlanabilir view, locale ve tema çözümleme altyapısı vardır. Diğer Web MVC framework lerini de kullanmaya imkan sağlar.

Spring Web MVC Framework

DispatcherServlet Gelen web isteklerini Handler nesnelerine dispatch eder. Handler mapping leri ayarlanabilir. WebApplicationContext nesnesini yönetir. ViewResolvers, LocaleResolvers, ThemeResolvers, MultipartFileResolvers, HandlerExceptionResolvers gibi özel bean lar mevcuttur.

DispatcherServlet in Bir Web İsteğini Ele Alması 1. WebApplicationContext nesnesi request üzerinden erişilebilir kılınır. 2. Mevcut locale ve theme resolver bean ları request ile ilişkilendirilir. 3. Eğer bir multipart resolver varsa, gelen request multipart veriye göre incelenir.

DispatcherServlet in Bir Web İsteğini Ele Alması 1. Uygun handler bean ı tespit edilir. 2. Eğer bir view bilgisi dönülmüş ise bu view render edilir. 3. Fırlatılan exceptionlar varsa bunlar HanlderExceptionResolver bean ları tarafından ele alınır.

Spring ve Güvenlik

Spring ve Uzaktan Erişim

İletişim Kenan SEVİNDİK Blog: http://ksevindik.blogspot.com E-Posta:ksevindik@gmail.com

Yararlanılan Kaynaklar Spring 2.5.x Referans Dokümanı TSS Arşivi- Introduction to the Spring Framework Makalesi, Rod Johnson Spring In Production Makalesi, Adrian Colyer (I. Bölüm ve II. Bölüm) Wikipedia Spring Framework http://en. wikipedia.org/wiki/spring_framework Test Driven Development by Example, Kent Beck

Sorular ve Cevaplar