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

Benzer belgeler
Spring Application Framework e Giriş

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

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

.com. Özcan Acar 2009 Kurumsal Java.com

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

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

Client Server Database

Spring ve Hibernate Entegrasyonu

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

Spring Framework Eğitimi

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

JBoss Seam Next Generation Integration Framework

JBoss Seam. Melih Sakarya

Üst Düzey Programlama

Java EE 5 Teknolojileri Jboss Seam

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

Business Delegate Tasarım Şablonu KurumsalJava.com

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

Üst Düzey Programlama

Üst Düzey Programlama

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

Üst Düzey Programlama

«BM364» Veritabanı Uygulamaları

ÖZGÜR YAZILIMLAR İLE J2EE

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

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

Üst Düzey Programlama

Spring Framework Eğitimi

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

Intercepting Filter Tasarım Şablonu KurumsalJava.com

.com. Kurumsal Java. Özcan Acar com

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Web Uygulamaları Mimarileri ve Güvenliği

Swing ve JDBC ile Database Erişimi

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

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

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

Java ile Tasarım Prensipleri ve Tasarım Örüntüleri

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

Spring Framework Eğitimi

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

Gönderilen uygulama incelendiğinde, belirtilen gerekliliklerin bir kısmının karşılandığı görülmüştür.

Java Programlama Giriş

Asp.Net Veritabanı İşlemleri

LINQ (Temel Kavramlar)

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

19 Şubat 2016 Cuma

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

Üst Düzey Programlama

Basit bir web uygulaması

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

Cahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü. Sorumluluk Zinciri. Kod Üretme (Code Generation)

MVC, MVP ve Mediator ile TDD Tecrübeleri. Kenan SEVİNDİK

Üst Düzey Programlama

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

Dinamik Proxy Tabanlı View Model API

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

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

Üst Düzey Programlama

Yazılım Kodlama ve İ simlendirme Standartları v1.0

MaestroPanel Kurulum

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

Görsel Programlama DERS 08. Görsel Programlama - Ders08/ 1

MVC, MVP ve Mediator ile TDD Tecrübeleri

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

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

2. Bölüm Spring İle Tanışalım

Lecture 11: Generics

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

BİL-141 Bilgisayar Programlama I (Java)

Özcan Acar 2009 Kurumsal Java.com

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Ders 8: Metotlar. barisgokce.com

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Açık Kaynaklı J2EE Geliştirme Araçları. Ahmet Işık İdeal Teknoloji A.Ş.

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

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

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Spring Giriş Eğitimi

Front Controller Tasarım Şablonu KurumsalJava.com

Sunum İçeriği. Programlamaya Giriş

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Sade ve tam ekran masaüstü kullanımının temel çıkış noktası, aranılan özelliğe çabuk erişimi sağlayan yenilikçi kullanıcı deneyimidir.

w w w. a n k a r a b t. c o m

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

MOBİL UYGULAMA GELİŞTİRME

ANKARA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. Java Teknolojileri Kullanılarak. Kan Bağış Web Uygulamasının Tasarlanması

Veritabanı. Ders 2 VERİTABANI

Java Dersi. Altuğ Bilgin Altıntaş

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

YZM 3215 İleri Web Programlama

HSE RADAR. İş Sağlığı ve Güvenliği Yönetimi Uygulama, Denetim, Eğitim ve Takip HSE GLOBAL YAZILIM A.Ş. 11 Mart 2016

İnternet Programcılığı


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

Transkript:

Spring Application Framework Harezmi Bilişim Çözümleri www.java-egitimleri.com 1

Spring Nedir? Enterprise Java uygulamalarını kolay, hızlı, 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 www.java-egitimleri.com 2

Spring i Öne Çıkaran Özellikler POJO tabanlı bir programlama modeli sunar Program to interface yaklaşımını temel ilke kabul etmiştir 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 www.java-egitimleri.com 3

Program To Interface Yaklaşımı Sınıflar arasındaki bağımlılıklar arayüz ve soyut sınıflara doğrudur Değişiklikler daha kolay biçimde ele alınabilir, sistem esnek bir yapıdadır Bu sayede sınıfların test edilebilirliği de artmaktadır Testlerde mock ve stub nesneler daha rahat kullanılabilir www.java-egitimleri.com 4

IoC Container ve Dependency Injection Spring nesneleri oluşturma ve bir araya getirme işine sistematik bir yol sunmaktadır Nesneler bağımlılıkların hangi concrete sınıflarla sağlandıklarını bilmezler Bağımlı olunan nesnelerin nereden geldiği de bilinmez Bağımlılıkların yönetimi sınıfların kendilerinden container'a geçmiştir www.java-egitimleri.com 5

IoC Container ve Konfigürasyon Metadata Konfigürasyon Metadata Sınıflar Spring Container Spring IoC container tarafından yönetilen nesnelere bean adı verilir Diğer Java nesnelerinden hiç bir farkı yoktur Bean ve bağımlılık tanımları konfigürasyon metadata'sını oluşturur Konfigürasyon metadata container tarafından kullanılır Konfigüre Edilmiş/ Çalışmaya Hazır Sistem Spring Container, konfigürasyon metadata formatından bağımsızdır XML, annotasyon veya java Tabanlı olabilir www.java-egitimleri.com 6

ApplicationContext Oluşturulması Spring Container'ın diğer adı ApplicationContext'dir Oluşturmak için programatik veya dekleratif yöntemler mevcuttur Standalone uygulamalarda programatik yöntem kullanılır Web uygulamalarında çoğunlukla dekleratif yöntem kullanılır Standalone ortamdan web ortamına geçiş web.xml ayarlarından ibarettir www.java-egitimleri.com 7

Spring ve Entegrasyon Birim Testleri www.java-egitimleri.com 8

Spring ve Test Güdümlü Programlama Entegrasyon testlerinin standalone ortamda yazımı ve çalıştırılmasını mümkün kılar 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 kontrolü yapılır ORM mapping lerin düzgün yapılıp yapılmadığı test edilmiş olur www.java-egitimleri.com 9

Spring TestContext Framework Otomatik ApplicationContext yönetimi yapar Spring container'ı test sınıfları arasında yeniden oluşturmamak için cache desteği sağlar TestCase içerisinden ApplicationContext e erişmek de mümkündür Test sınıflarına dependency injection yapılabilir Test metodlarının transactional context içerisinde çalıştırılması mümkündür www.java-egitimleri.com 10

Spring ile Veri Erişimi www.java-egitimleri.com 11

Spring ile Veri Erişimi Değişik teknolojiler için kullanımı kolay ve standart bir veri erişim desteği sağlar JDBC, JPA, Hibernate, JDO vb desteklenir Kapsamlı ve transparan bir transaction yönetim altyapısına sahiptir Farklı veri erişim teknolojileri aynı anda kullanılabilir Veri erişim teknolojilerinin exception hiyerarşilerini standart bir exception hiyerarşisine çevirir www.java-egitimleri.com 12

JDBC ile Veri Erişimi Veritabanı bağlantı parametrelerinin belirtilmesi ve bağlantının kurulması SQL sorgusunun 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ı www.java-egitimleri.com 13

JDBC ile Veri Erişimi Template Method örüntüsü tabanlı genel bir yaklaşım sunar JdbcTemplate Utility veya helper sınıflarına benzetilebilir Template tarafından dikte edilen standart bir kullanım şekli kod geneline hakim olur Callback'ler yardımı ile template nesneye çalıştıracağı kod belirtilir www.java-egitimleri.com 14

JDBC ile Veri Erişimi Uygulama tarafında JdbcTemplate ile Çalışırken sadece Callback yazmak yeterlidir Spring veritabanı bağlantılarını DataSource nesnesinden alır DataSource connection factory'dir DataSource'un kendi başına yönetilmesi ile connection pooling vs. uygulamadan izole edilmiş olur DAO JdbcTemplate DataSource DB JDBC ile veri erişimi JdbcTemplate üzerine kurulmuştur Çalışması için DataSource nesnesine ihtiyaç vardır Thread safe'dir, birden Fazla bean tarafından erişilebilir www.java-egitimleri.com 15

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 yazılmasını ve çalıştırılmasını kolaylaştırır www.java-egitimleri.com 16

Hibernate ile Veri Erişimi DataSource ve SessionFactory Spring managed bean'lar olarak tanımlanır SessionFactory nesnesini ApplicationContext içerisinde yönetmek için LocalSessionFactoryBean ile bean tanımı yapılır DAO SessionFactory DataSource DB www.java-egitimleri.com 17

Spring ve Transaction Yönetimi www.java-egitimleri.com 18

Spring ve Transaction Yönetimi Değişik veri erişim yöntemlerini aynı anda kullanmayı sağlayan ortak bir transaction altyapısı vardır Adı PlatformTransactionManager'dır Global ve lokal transactionları destekler Dekleratif ve programatik TX yönetimi mümkündür www.java-egitimleri.com 19

Spring ve Transaction Yönetimi Spring TX altyapısında en önemli nokta veri erişim teknolojisine uygun PlatformTransactionManager tanımlanmasıdır JDBC: DataSourceTransactionManager Hibernate: HibernateTransactionManager JPA: JpaTransactionManager JTA: JtaTransactionManager www.java-egitimleri.com 20

Spring ve Transaction Yönetimi PlatformTransactionManager soyutlaması sayesinde uygulama TX altyapısından bağımsızdır Bu sayede uygulamalar lokal TX'den global TX'e transparan biçimde geçiş yapabilir Ya da veri erişim teknolojisi rahatlıkla değiştirilebilir Örneğin, HibernateTransactionManager dan JtaTransactionManager a geçiş için sadece bean tanımlarında değişiklik yeterlidir www.java-egitimleri.com 21

TransactionManager Konfigürasyonu - JDBC Service DAO DataSource TransactionManager JdbcTemplate DataSource DB www.java-egitimleri.com 22

TransactionManager Konfigürasyonu - Hibernate Service DAO Hibenate TransactionManager SessionFactory DataSource DB www.java-egitimleri.com 23

Dekleratif Transaction Yönetimi Çoğunlukla tercih edilen yöntemdir Uygulama içinde TX yönetimi ile ilgili iş yapılmaz Spring AOP ile implement edilmiştir, fakat kullanmak için AOP bilmeye gerek yoktur! EJB CMT'ye çok benzer Metot düzeyinde TX yönetimi yapılabilir www.java-egitimleri.com 24

Dekleratif Transaction Yönetimi Dekleratif biçimde kendinize özgü rollback kuralları tanımlanabilir Transaction öncesinde ve sonrasında size özgü kod çalıştırabilirsiniz www.java-egitimleri.com 25

Dekleratif Transaction Yönetimi Sistem exception'ları (runtime) TX rollback nedenidir Application exception'larında(checked) TX rollback edilmez Ancak çoğunlukla bu davranış uygulamaya göre değiştirilir Gerektiğinde uygulama içerisinden exception fırlatmadan da rollback yaptırılabilir www.java-egitimleri.com 26

Spring MVC, Web Programlama ve REST Kabiliyetleri www.java-egitimleri.com 27

Web Uygulamalarında ApplicationContext Oluşturma Spring herhangi bir Web UI teknolojisi ile birlikte kullanılabilir ApplicationContext, ContextLoaderListener ile bootstrap edilip ServletContext üzerinden erişilebilir Örneğin bir Servlet içerisinden ApplicationContext bean lookup ile istenilen bean alınıp kullanılabilir www.java-egitimleri.com 28

Web Uygulamalarında ApplicationContext Oluşturma WebApplicationContext ApplicationContext'i extend eder İlave kabiliyetler sunar ApplicationContext nesnelerini dekleratif oluşturmak için web.xml içinde ContextLoaderListener kullanılır WebApplicationContext nesnesi ServletContext'e bind edilir www.java-egitimleri.com 29

Spring MVC Web Framework Spring MVC de diğer pek çok MVC framework gibi request-driven dır DispatcherServlet etrafında kurulu bir frameworktür DispatcherServlet bir HttpServlet implementasyonudur Front Controller pattern ına iyi bir örnektir www.java-egitimleri.com 30

DispatcherServlet web.xml içerisinde tanımlanıp, burada hangi requestleri ele alacağı belirtilmelidir Spring IoC Container ile tam bir entegrasyona sahiptir Ayağa kalkarken kendine ait bir WebApplicationContext yaratır www.java-egitimleri.com 31

Front Controller J2EE Pattern request response Front Controller View Template Tomcat Web Container model delegate request render response model Controller (Handler) handle request create model www.java-egitimleri.com 32

Controller Bean Tanımları Web katmanından servis katmanına erişim sağlayan bean'lardır HTTP request'lerini handle ederler Kullanıcı input'unu alır ve modele dönüştürür Spring 3 ile birlikte Controller beanları için herhangi bir arayüz implement edilmesi, sınıftan türetilmesi gerekmez www.java-egitimleri.com 33

Controller Bean Tanımları @Controller annotasyonu bir bean'ın MVC controller olduğunu anlatır Controller bean'ları da ApplicationContext içerisinde tanımlanmalıdırlar Component scan kabiliyeti ile @Controller annotasyonuna sahip sınıfların bean olarak tanımlanması sağlanabilir www.java-egitimleri.com 34

Spring ve REST RESTful uygulamalar geliştirmek için Java EE6 standartı JAX-RS'dir Jersey, CXF, Restlet gibi impl mevcuttur Spring MVC 3.1 ile birlikte RESTful Web servisleri ve uygulamalar geliştirmek mümkün hale gelmiştir Fakat Spring MVC bir REST impl. değildir www.java-egitimleri.com 35

Spring ve REST REST servisleri @Controller ve @RequestMapping ile tanımlanan bean'lar üzerinde hayata geçirilir @PathVariable @RequestBody @ResponseBody @ResponseStatus annotasyonları ile REST servisleri yazılabilmektedir www.java-egitimleri.com 36

Response Content Tipinin Belirlenmesi @RequestMapping(value="/vets",produces={"application/json","application/xml"}) @ResponseBody public Collection<Vet> getvets() { return petclinicservice.getvets(); } @RequestMapping("/vets") @ResponseBody public String getvetsashtml() { StringBuilder builder = new StringBuilder(); Collection<Vet> vets = petclinicservice.getvets(); builder.append("<html><body>"); for(vet vet:vets) { builder.append(vet.getfirstname() + " " + vet.getlastname() + "<br>"); } builder.append("</body></html>"); return builder.tostring(); } http://localhost:8080/petclinic/mvc/vets.html -> text/html http://localhost:8080/petclinic/mvc/vets.json -> application/json http://localhost:8080/petclinic/mvc/vets.xml -> application/xml www.java-egitimleri.com 37

Spring ve Event Yönetimi www.java-egitimleri.com 38

Event Yönetimi ApplicationContext belirli durumlarda event'ler fırlatır Bunlar ApplicationEvent tipinde nesnelerdir Bean'larımız bu event'leri yakalayıp değişik işler yapabilirler Bunun için ApplicationListener arayüzü implement edilir Observer örüntüsüdür www.java-egitimleri.com 39

Spring Container ve Observer,Mediator Örüntüleri ApplicationContextAware (Publisher) event ApplicationListener (Subscriber) publishevent publishevent event ApplicationContext (Event Bus) ApplicationListener (Subscriber) ApplicationContextAware (Publisher) event ApplicationListener (Subscriber) www.java-egitimleri.com 40

Built-in Event Tipleri ContextRefreshedEvent ContextClosedEvent RequestHandledEvent Ayrıca Spring Security gibi diğer framework'lerin de built-in event'leri mevcuttur AuthenticationSuccessEvent AbstractAuthenticationFailureEvent www.java-egitimleri.com 41

Uygulamaya Özel Event Tipleri Uygulamaya özel event'ler de tanımlanabilir Daha sonra bu event'ler fırlatılabilir ApplicationContext.publishEvent() ApplicationListener nesnelerine event'ler senkron biçimde verilir Bu durumda publishevent() bütün listener'lar çalışana değin süreci bloklar www.java-egitimleri.com 42

Metot Düzeyinde Cache ve Validasyon Kabiliyeti www.java-egitimleri.com 43

Spring ve Metot Düzeyinde Caching Cache ihtiyacı olan servis bean'larına bu özelliği sağlamak amacıyla geliştirilmiştir ORM 2 nd level cache domain nesnelerinin cache'lenmesi içindir Spring cache ise daha çok web veya remote metot çağrılarından dönen sonuçların cache'lenmesi için düşünülmüştür www.java-egitimleri.com 44

Spring ve Metot Düzeyinde Caching public class FooService { @Cacheable("fooCache") public Foo findfoo(string name) { //... } Cache ismidir, cache key default durumda metot parametrelerinden elde edilir @Cacheable( value="default",key="#date.time") public Foo findfoo(date date) { //... } Cache key SpEL expression yardımı ile de elde edilebilir } @Cacheable( value="default",condition="#i>10") public Foo findfoo(int i) { //... } Cache işleminin ne zaman devreye gireceğini belirlemek için SpEL yardımı ile condition da tanımlanabilir www.java-egitimleri.com 45

Spring ve Metot Düzeyinde Caching public class FooService { Key değerine karşılık gelen entry cache'den çıkarılır @CacheEvict(value="fooCache") public void updatefoo(string name, int age) { //... } @CachePut("fooCache") public Foo insertfoo(string name, int age) { //... } } Metot return değeri cache'e entry olarak eklenir Default durumda metot input parametreleri ile key değeri belirlenir www.java-egitimleri.com 46

Spring ve Metot Düzeyinde Validasyon Validasyon ihtiyacı olan servis bean'larına bu özelliği sağlamak amacıyla geliştirilmiştir JSR-303 Bean Validation API'si kullanılır Metot input parametreleri veya return değerleri validasyona tabi tutulabilir www.java-egitimleri.com 47

Spring ve Metot Düzeyinde Validasyon public class User { @NotEmpty private String username; @Email private String email; @Min(18) @Max(64) private int age; } @Validated public class UserService { public User finduser(@notempty String nationalityid) { //... } public void createuser(@valid User user) { //... } } www.java-egitimleri.com 48

İletişim Harezmi Bilişim Çözümleri Kurumsal Java Eğitimleri http://www.java-egitimleri.com info@java-egitimleri.com www.java-egitimleri.com 49