Spring Ders01 - Spring'e Giriş
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
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
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.ö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.
Gerekli sınıfların daha önce tanımlandığını varsayarsak buna göre beanleri aşağıdaki şekilde oluşturabiliriz.
applicationContext.xml
<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.
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{ 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
Yorum Gönder