Spring Giriş Eğitimi



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

Spring Framework Eğitimi

Java Dersi. Altuğ Bilgin Altıntaş

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

Java JDK (Java Development Kit) Kurulumu:

19 Şubat 2016 Cuma

PHP ile İnternet Programlama


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

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

ÖZGÜR YAZILIMLAR İLE J2EE

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

Sunum İçeriği. Programlamaya Giriş

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

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Nasıl Pardus Geliştiricisi Olunur?

İçerik Yönetim Sistemi. Joomla!

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

KOD PARÇACIKLARI 1 / 5

Üst Düzey Programlama

1.Yazılım Geliştirme Metotları 1

Veri Toplama Sistemini

İçerik Yönetim Sistemi. Joomla! Öğr.Gör. Serkan KORKMAZ. Birecik MYO

DGridSim Gerçek Zamanlı Veri Grid Simülatörü. Yazılım Tasarımı Dokümanı v Mustafa Atanak Sefai Tandoğan Doç. Dr.

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

BULANIK MANTIK VE SİSTEMLERİ BAHAR DÖNEMİ ÖDEV 1. Müslüm ÖZTÜRK Bilişim Teknolojileri Mühendisliği ABD Doktora Programı

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

Üst Düzey Programlama

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

Windows 10 için Java JDK 8 ve NetBeans IDE 8.2 Kurulumu Detaylı Anlatım

Java Programlama Giriş

TCMB Deneyim Raporu. Kurumsal Java Uygulama Platformu. Sacit Uluırmak. Türkiye Cumhuriyet Merkez Bankası Sistem Araştırma ve Planlama Müdürlüğü

Lecture 11: Generics

Java EE 5 Teknolojileri Jboss Seam

1. Oracle Data Miner 11g Release 2 Kurulumu Aşamaları

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

JBoss Seam Next Generation Integration Framework

VERİ TABANI ve YÖNETİMİ

Üst Düzey Programlama

1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Java Programlamaya Giriş

Google Search API ile ajax arama

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

BEUN VPN Hizmeti. VPN Nedir?

Windows 7 - IIS 7.5 üzerine PHP ve MySQL kurulumu

Açık Kaynak Kodlu Yazılım Nedir?

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

SHOP INGENICO DOKUMANI

EDI MIGROS (Sipariş) LOGO ENTEGRASYONU

PHP 1. Hafta 1. Sunum

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Java Temel Özellikleri

Git Sürüm Kontrol Sistemi

HSancak Nesne Tabanlı Programlama I Ders Notları

Nova Dental D Ana Makine Kurulum (Windows Server XP Home/Pro)

02 Temmuz İlgili Versiyon/lar: ETA:SQL, ETA:V.8-SQL. İlgili Modül/ler: Muhasebe IV

Tekir (Ön Muhasebe Yazılımı)

ÖĞRENCİLER İÇİN ÖĞRENME YÖNETİM SİSTEMİ KULLANMA KILAVUZU

Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

BAY.t ENTEGRE PRO e-fatura ÇÖZÜMÜ ENTEGRATÖR KULLANIM YÖNTEMİ

MyFaces Özgür JSF Uyarlaması. Bora Güngören Portakal Teknoloji

BİLGİSAYAR DESTEKLİ TASARIM AUTOCAD DERSİ. 1. HAFTA Öğr. Gör. Serkan ÖREN

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

1.PROGRAMLAMAYA GİRİŞ

B2B Sistemi Kullanımı Hakkında Bilgiler

Data Structures Lab Güz

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Fatura/Rapor Dizayn. Turquaz Muhasebe. Versiyon Nisan 2005

Samsun Çocuk Hizmetleri İ l Koordinasyon Sekretarya Birimi

İZLEME VE KAYIT YAZILIMI


Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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

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

SELÇUK ÜNİVERSİTESİ SEYDİŞEHİR MESLEK YÜKSEKOKULU BİLGİSAYAR TEKNOLOJİLERİ BÖLÜMÜ BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS DAĞILIM ÇİZELGESİ (2010)


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

Kurulum ve Sistem Gereklilikleri 1

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

Üst Düzey Programlama

5.Port Yönlendirme ve Firewall

Cost Modülü Ay sonu İşlemleri

İNTERNET PROGRAMCILIĞI - II

Linux ve Windows Üzerinde C ve C++ Kullanımı

Asansör firmaları için özel olarak geliştirilen takip yazılımı: Asansör Otomasyon tanıtım sunumu ve kullanım açıklamaları. / 25

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Dijital Pazarlama Ajansı

GtkD ile Görsel Programlama

Gitlab ile Web Tabanlı Git Deposu Yönetimi

Açık Kaynak Güvenlik Duvarı Sistemi

Murat DiRiM - muratdirim@hotmail.com - muratdirim.blogspot.com

WAMP SERVER KURULUMU

İŞ YERİNDE GELİŞİM. Yeni, gelişmiş iletişim teknolojilerine adapte olma

Transkript:

Spring Giriş Eğitimi Bu eğitimde Spring ın hangi problemlere karşı etkili olduğundan bahsedeceğim. Ayrıca çekirdek Spring teknolojisinin nasıl işlediği; Dependency Injection - DI ve Inversion of Contol kavramlarını basit bir örnek üzerinden anlatacağım. Problem Spring açık kaynak kodlu, kurumsal uygulamaların karmaşıklığını gidermek için ortaya çıkmış bir projedir. Bu karmaşık problemlerden bahsedelim : Bağlaşım kesme problemi Transaction desteği (Veritabanı işlemleri için şart) Güvenlik alt yapısı (Hak hukuk ayarlamaları için ) Dağıtık programlama ihtiyacı (Özellikle yoğun trafik alan uygulamalar için çok önemli) Tarihçe Aslında konuyu daha iyi anlamak için biraz daha geriye gidelim; 1998 yılında Sun Microsystems ın ortaya koyduğu Enterprise Java Beans 1.0 sürümü (namı diğer EJBs) başlıca yukarıdaki problemlere derman olması için yayınlandı. Fakat gel gelelim EJB teknolojisini projelerde uygulamak ciddi anlamda karmaşıklık getiriyordu. Daha da kötüsü kodun gereksiz yere büyümesine sebebiyet veriyordu. Bunun doğal sonucu olarak da EJB teknolojisi zaman içerisinde popülerliğini kaybetti. Yanlız 2011 yılında EJB light-weight sürümü ile tekrardan çıkış yakalama çabasında olduğunu belirtmek isterim. Spring Teknolojileri ve Genel Mimari İşte Spring; kurumsal uygulamaların bu karmaşık ihtiyaçlarına cevap verebilen bir altyapıdır; Günümüzde Spring doğal olarak çok daha fazla probleme çözüm oluyor. İşte Spring yapısının

genel mimarisi : Çekirdek Spring in en temel fonksiyonu Inversion of Control ve DI (Dependency Injection) kavramlarını gerçekleştirmektir. Proje ve Apache Maven Kod örneklerinin detaylarına aynı sayfadan kod.zip dosyasını indirerek ulaşabilirsin. Bu proje Apache Maven tabanlıdır. Eğer Apache Maven bilmiyorsan çok kısa bir sürede Maven ı öğrenmek için Kodcu.com içerisindeki Maven videolarını izlemeni tavsiye ederim. Google dan kodcu Maven diye aratınca ilgili video karşına hemen çıkacaktır. Spring-giris projesi konsoldan çalışabilecek çok basit bir Spring uygulamasıdır. Amacı Spring in en yalın halini ve etkilerini göstermektir. Not : Bu uygulamayı IntelliJ 10 sürümünde geliştirilmiştir. Proje içerisinde Gorev ve Memur adında iki adet interface sınıfı tanımlıdır. Buradaki amacım hangi memura hangi görevin gideceğini belirlemek fakat esas dikkat edilmesi gereken nokta; Gorev sınıfının alt elemanlarıyla, Memur sınıfının alt elemanları arasındaki bağı Spring ile keşmiş nasıl kestiğimdir. İşte Detaylar :

Gorev.java Interface kavramı uygulamanızı esnek hale getirmek için eşsiz mekanizmalardır. Şimdi Gorev sınıfından türeyen iki alt sınıfa bakalım GuvenlikGorevi.java OkulGorevi.java

Buraki Gorev sınıfını bir anlaşma / sözleşme gibi düşünebilirsin. OkulGorevi ve GuvenlikGorevi sınıflarını da bu sözlesmenin (Gorev.java) yüklenicileri olarak hayal edebilirsin. Uygulama çalıştığında ihtiyaca göre hangi yükleniciye ihtiyaç varsa Spring bunları otomatik olarak oluşturacak ve iletecektir. Memur.java Ogretmen.java

Öğretmen sınıfı yapılandırıcısına (satır 9) Gorev tipinde bir değişken alıyor. Aa ha! İşte buraya çalışma anında kaç farkı nesne gelebilir? Cevap :2 1 - OkulGorevi 2 - GuvenlikGorevi Hangisinin geleceğin kodcu.xml (biraz daha aşağıda) dosyasından belirteceğiz. İşte Inversion of Control ve DI (Dependency Injection) kavramları devreye girdi bile! Peki esas sorumu soruyorum; Ogretmen hangi gorevin geleceğinden haberdar mı? Ya da şöyle sorayım Ogretmen sınıfı çalışma anında hangi nesnenin geleceği umrunda mı? Değil. İşte buna bağlaşımı kesmek denir. (decoupling). Polis.java Memur, Ogretmen ve Polis arasındaki ilişki; Gorev, OkulGorevi ve GuvenlikGorevi sınıflarından farklı değil Main.java Bu test etmek için kullanılan basit bir sınıf. Dikkat edilirse 17. satırda Spring yapısı ayağa

kaldırılıyor. Bu işlem sırasında kodcu.xml içerisindeki tanımlamalar esas alınacaktır. Ekran çıksı ne olur? kodcu.xml Spring yapısını kontrol ettiğimiz dosya kodcu.xml. Dikkat edilirse Ogretmen ve OkulGorevi sınıfları Spring tarafından oluşturuluyor yanı kontrolü Spring yapısına verdik işte buna basitçe Inversion of Contol denir; yani kontrolü devir teslim etmiş bulunuyoruz. Uygulamayı çalıştırmak için Bu uygulama maven tabanlı olduğu için istediğiniz maven destekli IDE de açabilirsiniz. IntelliJ, Eclipse veya Netbeans. Sonuç Şimdi diyebilirsin ki; Ogretmen sınıfının yapılandırıcına Gorev atmak için bu kadar eziyete ne var? Ufak uygulamalarda Spring in faydası görülmeyebilir. Zaten her uygulama da Spring alt yapısını kullanmak doğru olmayabilir. Fakat şöyle düşün; Spring en başta bir Interface kullanma zorunluluğu getiriyor, bir disiplin. Ayrıca uygulama büyüdükçe sınıfların karmaşıklığını Spring ile çok rahat ve güvenli bir şekilde yönetebilirsin. Bu örnek üzerinde konuşursak Ogretmen ve OkulGorevi sınıflarına ait nesne Spring tarafından oluşturuluyor ve yönetiliyor. Uygulamanın karmaşıklığı artsa da Spring alt yapısı size güvenli bir ortam sunmaya devam edecektir. Aynı şekilde kodcu.xml içerisindeki 8 satıra bakacak olursanız OkulGorevi nesnesi Ogretmen nesnesine zerk ediliyor. Zerk (Dependecy Injection - DI) kavramının somut işleyişini buradan açık bir şekilde görülebilir.

Bu ayar işlemlerini xml dosyasını içerisinden yapmama şansımız elbette var. Bu konuyu bir sonraki ders içerisinde anlatmaya çalışacağım. Spring her ne kadar Java dünyasından çıkmış bir alt-yapı olsa da, Microsoft.NET dünyasındaki uygulamalar içinde çözüm sunmaktadır. Detaylı bilgi için http://www.springframework.net/ adresini ziyeret edebilirsin. Bu yazıyla Spring felsefesini ve yapısını başlangıç düzeyinde de anlatmaya çalıştım. Bir sonraki ders görüşmek üzere. İyi çalışmalar... Altuğ Bilgin Altıntaş altug - at - kodcu.com