Spring Ders01 - Spring'e Giriş


spring
   Spring java uygulamalarını yazmayı kolaylaştıran açık kaynaklı frameworktür. Kurumsal uygulamalar yazmak için kullanılır.

Spring'in avantajları
  • POJO (Plain Old Java Object) sayesinde tanımlanan sınıflar karmaşıklıktan uzaktır.
  • Dependency Injection (DI) desteği vardır.
  • Inversion Control'a sahiptir.
  • Aspect Oriented Programming (AOP) ' ye sahiptir.
İlerleyen konularda bunların açıklamalarını yapacağız.

Kısa Bilgiler
  • Spring uygulamalarında nesneye karşılık düşen öge beandir. 
  • Beanler .xml dosyalarında oluşturulur.
  • Standart java projelerinde bean çağrımı main sınıfında gerçekleştirilir.
  • Genel spring stratejisine göre proje için bir interface (arayüz) veya abstract (soyut) sınıf oluşturulur. Bu interface veya abstract sınıfı implement eden bir sınıf oluşturulur. Böylece beanler bu implement/extends eden sınıflardan üretilir. .xml dosyasında üretilen beanler main sınıfında çekilerek kullanılır.
Bean Tanımlama
      Gerekli sınıfların daha önce tanımlandığını varsayarsak buna göre beanleri aşağıdaki şekilde oluşturabiliriz.

applicationContext.xml

 <beans xmlns..>

<bean id="bean0" class="paketIsmi.beanSinifi"></bean>

<bean id="bean1" class="paketIsmibeanSinifi">
     <property name="ozellik1" value="ozellikDegeri1"/>
     <property name="ozellik2" value="ozellikDegeri2"/>
</bean>

<bean id="bean2" class="paketIsmi.beanSinifi">
    <constructor-arg value="constructorDegeri"/>
</bean>

<bean id="bean3" class="paketIsmi.beanSinifi">
    <property name="ozellik1" ref="beanX"/>
</bean>

<bean id="bean4" class="paketIsmi.beanSinifi">
    <constructor-arg ref="beanX"/>
</bean>

<bean id="bean5" class="paketIsmi.beanSinifi">
    <property name="ozellik1"><bean>....</bean></property>
</bean>

<bean id="bean6" class="paketIsmi.beanSinifi">
    <property name="ozellik1"><list>....</list></property>
</bean>

<bean id="bean7" class="paketIsmi.beanSinifi">
    <property name="ozellik1"><map>....</map></property>
</bean>

</beans>



  • bean0 idli beande temel bir bean oluşturulumu gösterilmiştir.
  • bean1 idli beande property tagları o özelliğin setter metotlarını çağırarak gerekli değerlere setler.
  • bean2 idli beande değerler direkt olarak constructora argüman gönderilmiştir.
  • bean3 idli beande özellik1 değerine bir bean referans edilmiştir.Böylece referans edilen bean değişikliğe uğradığında bean3 de değişikliğe uğrayacaktır.
  • bean4 idli beande constructora bir bean referans edilmiştir.Böylece referans edilen bean değişikliğe uğradığında bean4 de değişikliğe uğrayacaktır.
  • bean5 idli beande özellik1 değerine yeni bir bean üretilerek verilmiştir.
  • bean6 ve bean7de ise list ve map tipinde değişkenler özellik1 değerine atanmıştır.
Container Örnekleme ve Beanleri Çekme
    Bir bean container sınıfından üretilen nesne yardımıyla containerdan çekilir. Bu bean çekme işlemi aşağıda gösterilmiştir.

Main.java

public class Main{
   public void main(){
   
       ApplicationContext context =
                              new ClassPathXmlApplicationContext("applicationContext.xml");
   
       InterfaceIsmi nesne1= (InterfaceIsmi) context.getBean("bean1");
       AbstractSinifIsmi nesne2 = (AbstractSinifIsmi) context.getBean("bean2");

  }
}

Yukarıdaki kod ApplicationContext nesnesi oluşturup ( konteynır örnekleme) bu nesne yardımıyla applicationContext.xml'den beanleri çekmeyi göstermektedir.

Konteynır (Container) örneklemenin birkaç farklı yolu vardır. Bunlar


1. new ClassPathXmlApplicationContext("/dosya.xml");
2. new ClassPathXmlApplicationContext("/dizin/dosya.xml");
3. new FileSystemXmlApplicationContext("/../../dosya.xml");


1.örnek bean tanımlama dosyasının sınıf yolunun en üstünde bulunduğu durumlarda,
2.örnek bean tanımlama dosyasının sınıf yolunun bir alt dizinin bulunduğunda,
3.örnek bean tanımlama dosyasının herhangi bir yerde bulunduğunda kullanılır.

Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)