Spring Framework

Spring Framework Uygulama Çatısı

  • Yaygın olarak kullanılmaya baslanılan bir uygulama gelistirme çatısıdır
  • Uygulama geliştirmek için hafif bir çatı sunar
  • Esnek ve modüler olması popularitesini arttırmıştır.
  • Xml ve annotations güdümlü yapıpsı kullanımını kolaylaştırmaktadır.
  • Java platformu sunduğu API'ler sayesinde genişledi ve zorlaştı.
  • Spring JAVA zorluklarını kendi apileri ile aşmaktadır.
  • Amaç program gelistirmeyi kolaylastırmak ve gelistiriciye kullanım özgürlüğü sağlamaktır.

Bu yüzden Spring frameworkünü olusturan modüller
birbirinden bağımsız olarak da kullanılabilir olarak tasarlanmıslardır.

Bağımsız
kullanılabilen bu modüller, birlikte kullanıldıklarında daha iyi sonuç veren iç
frameworkler olarak düsünülebilirler

Spring birbirinden bağımsız ve ihtiyaca göre kullanımına karar verilebilecek
birçok farklı özellik içerir.

Bu özellikler çatıyı olusturan yedi farklı birim tarafından
sağlanır.

1

2

3

4

5

6

7

İstediğin Parçayı Kullan!

  1. Spring Core(Spring Kabuğu)
  • Bağımlılık iletimini sağlayan kabuk birimi, uygulama çatısının en temel birimidir.
  • Bu birim, gelistiriciye çekirdek kozasının islevlerini yönetme olanağı verir.
  • Kabuğun içerdiği temel kavram olan “BeanFactory”, çekirdek yaratımında tekilliğin sağlanması gerekliliğini ortadan kaldırıp, bağımlılıkların biçim ve tanımlarını eslemeyi programlama mantığından dıslar.

2. Spring Context(Spring Bağlamı)

  • Kabuk biriminin üstünde, çekirdeklere uygulama çatısı tarzında erisimi sağlayan, bağlam birimi bulunur.
  • Bağlam birimi, özelliklerini çekirdek birimindenkalıtır.
  • Bu özelliklere metin tabanlı ileti gönderme desteği gibi özellikleri de ekler.

3. Spring DAO

  • DAO birimi, çaba gerektiren JDBC kodlama ve veri tabanı üreticisine bağımlı hata kodlarını ortadan kaldıran JDBC soyutlama katmanını sağlar.
  • JDBC paketi,sadece özel ara yüzleri gerçeklestiren sınıflara değil, tüm POJO’lara (Plain Old Java Objects / Basit Java Nesneleri) da birim islem yönetimi gerçeklestirmek üzere programlama ve tanımlama yöntemleri sunar.

4. Spring ORM

  • ORM birimi, JDO, iBatis ve Hibernate de dahil olmak üzere, popüler nesneiliskisel esleme API’lerine bütünlestirme katmanı sunar.
  • Gelistirici, ORM birimini kullanarak, tüm bu nesne-iliskisel esleyicileri Spring’in diğer tüm imkanlarıyla birlikte kullanabilir.

5.Spring  AOP

  • Spring’in AOP birimi, yönelim tabanlı programlama gerçeklestirimi olan AOP politikası sunar.
  • Bu politika sayesinde, gelistirici kodunda bağımlılık yaratacak eslemelerden uzak, islevsel tanımlamalar yapabilir.

6.Spring WEB

  • Spring’in Web birimi, servlet dinleyicileri ve web tabanlı uygulama bağlamını kullanarak bağlamlara ilk değer atama gibi temel web tabanlı bütünlesim özelliklerini sağlar.
  • Ayrıca bu birim, Spring’in WebWork ya da Struts ile birlikte kullanıldığı durumlarda bütünlesimini de gerçeklestirir.

7.SpringMVC

  • Spring’in Web MVC (Model-View-Control / Model-Görünüm-Denetim) birimi,web uygulamaları için Model-Görünüm-Denetim gerçeklestirimini sağlar.
  • Spring’in MVC gerçeklestirimi, yalnızca basit bir gerçeklestirim değil, Spring çatısının tüm özelliklerine taban olan, model ile etki alanı arasında kesin ayrımı sağlar.

Neden Spring?

  • Uygulama sunucu bağımlı değil
  • Açık kaynak kodlu
  • Servlet konteynerde çalışabilir
  • Hafif
  • Modüler
  • Community gücü ++
  • De-facto standart

IOC (Inversion Of Control)

  • Denetim Çevirimi
  • Bağımlılık İletimi (Diğer Adı)
  • Nesne oluşturma ve yönetme yükünü
    geliştiriciden Spring Framework’e çeviren
    yaklaşımdır.
  • Buna göre, bileşenler arasındaki bağımlılıklar
    bileşenlerin kendileri yerine Spring tarafından ele alınır.
  • Spring bilesenleri bir araya getirmek ve biçimlendirmek için Java çekirdeklerini (JavaBean) kullanır.
  • Bu çekirdeklere dair isimlendirmelerin yapılması, gerekli ilk değer atamaları ve diğer çekirdeklerle aralarındaki bağımlılıkların tanımlanması XML yapılandırma kütüklerinin içerisinde yapılır.
  • Aynı zamanda springe özel anotationslarla da bu işlem gerçekleştirilebilir.
  • Spring,bu kütükleri okur ve buradaki tanımları kullanarak sınıflar arasındaki bağ otomatik olarak olusturulmus olur.
  • Gerçeklestirimine ihtiyaç duyulan nesneye,bağımlı olduğu nesnelerin yaratımını ihtiyaç duymadan erisilebilir.
  • Bütünlestiriciihtiyaç duyarsa bu nesneleri yaratabilir.
  • Bütünlestirici bu düzenlemeyi yaparken yanlızca yapılandırma kütüğünü (Configuration File) kullanır.
  • Böylece, Spring çok etkin ve kolay sınama imkanları sağlar.

Spring Konteyner Temsil

!Dependency Injection

Dependency Injector

Coupling Problem?

Yapılandırma Yöntemleri

  • XML Bazlı Yapılandırma
  • Annotation Bazlı Yapılandırma

Xml yapılandırıcı kullanımı

  • IOC konteynerin yöneteceği nesneler
    tanımlanır.
  • Nesneler arası bağ kurulur.
  • Nesnelere ait konfigürasyonlar yapılır.

Injection teknikleri

  • Setter Injection
  • Constructor Injection

Annotation kullanımı

  • Xml yapılandırma dosyalarına olan bağımlılığı
    azaltır.
  • Spring Bean’ lerin kolayca tanımlanmasını
    sağlar.
  • Daha basit kullanım şansı sunar.

Annotation kullanımı aktif edilmeli

  • <context:annotation-config/>
  • – @Autowired
  • – @PostConstruct
  • – @PreDestroy
  • – @PersistenceContext
     

<context:component-scan base-package="com.kodcu"/>

  • – @Component
  • – @Repository
  • – @Service
  • – @Controller

Seçiciler

  • Otomatik bağlama özelliğinde, bir arayüze
    karşılık gelen birden fazla yüz olduğunda,
    hangi yüzün zerk edileceği seçilmelidir.
  • Bu işlem @Qualifier notasyonlarıyla sağlanır.

Scope tipleri

  • Her nesne’nin tek bir örneği oluşturulur
    (varsayılan)
  • Eğer farklı yaşam süreci davranışlarına ihtiyaç
    duyuluyorsa; scope özelliği yapılandırılmalıdır.
    (Xml ve Notasyon ile)

Kesiciler (Interceptors)

Dynamic Proxy

AOP (Aspect Oriented Programming)

Spring Transaction

  • Declarative tanımlama için (EJB’lere benzer şekilde) @Transactional notasyonu kullanılır.<tx:annotation-driven/> tanımlaması ile tarama etkinleştirilebilir.

İhtiyaçlar

  • JpaTransactionManager
  • LocalContainerEntityManagerFactoryBean
  • persistence.xml (opsiyonel)

Transaction (Giriş)

  • Transaction kısaca; “Ya Hep Ya Hiç” mantığıyla
    çalışan ve yapılan işlemlerin başarılı olup
    olmadığı bilgisini veren ve bu bilgiyi garanti
    eden mekanizmadır.
  • JPA işlemlerinde Transaction nesneleri, Entity
    Yönetici nesneler tarafından sağlanır.

Transaction (Giriş)

ACID Prensibi

  • Atomicity (Unit of Work)
  • – Ya hep ya hiç!
  • – Birden fazla bağımsız iş, tek bir bütün kabul edilir.
  • Consistency
  • – Tutarlılık
  • – Transaction onaylandığında, verinin orada olduğunu garanti eder.
  • Isolation
  • – Transaction onaylanana kadar, verinin diğer
    kullanıcılara gözükmemesidir.
  • Durability
  • – Transaction onaylandığında, veri değişikliklerinin
    diğer tüm kullanıcılar tarafından görünür
    olmasıdır.

Transaction Yayılımı

İzolasyon Seviyeleri

  • READ_UNCOMMITTED
  • READ_COMMITTED
  • REPEATABLE_READ
  • SERIALIZABLE

READ_UNCOMMITTED

  • O anda yazılan, ama commit edilmeyen verinin okunmasına izin verir. (Dirty Reads)

READ_COMMITTED

  • Yazılmış, ama onaylanmamış veriyi okumaya
    izin vermez.
  • Örn: MsSQL ve ORACLE varsayılan olarak bu
    seviyeyi kullanır.

REPEATABLE_READ

  • Non-Repeatable-Read kabul edilmez;
  1. – T1 bir satır okur,
  2. – T2 aynı satırı değiştirir,
  3. – T1, değişen satırı tekrarokur.
  4. – DB2, MySQL, PostgreSQL

SERIALIZABLE

  • REPEATABLE_READ’in tüm özelliklerini barındırır.
  • Ek olarak, Phantom READ’e izin vermez.

Spring ve JSF entegrasyonu

  • Adım 1: (JavaServer Faces yapılandırma dosyasına (faces-config.xml), SpringBeanFacesELResolver tanımlamak.

Spring ve JSF entegrasyonu

  • Adım 2: Spring konteyneri ayağa kaldıracak ContextLoaderListener dinleyici sınıfın Web aktarım tanımlayıcısına (Web deployment descriptor - web.xml) eklenmesi.

Spring ve JSF entegrasyonu

  • Adım 3: Spring konteynerin, Http isteklerini karşılayan FacesServlet isteklerini görebilmesi için RequestContextListener dinleyici sınıfın Web aktarım tanımlayıcısına (Web deployment descriptor – web.xml) eklenmesi.
  • Adım 4: Spring konteyner dahilindeki nesnelerin (beans) tanımlandığı Xml konfigürasyon dosyasının, Web aktarım
    tanımlayıcısına (Web deployment descriptor -Web.xml) tanıtılması.

Sorular?

Made with Slides.com