Managed Bean Kavrami

Managed Bean Kavrami

“Managed Bean” JSF ile dogan bir kavramdir, cesitli kaynaklarda “Backing Bean” olarakta gecmesine ragmen temelde ayni kavrami ifade eder. Adindan da anlasilabilecegi gibi ortada bir java bean’i var ve JSF kendi icindeki IOC(Inversion Of Control) containeri ile bu bean’in yasam dongusunu yonetiyor. Peki ne ise yariyor bu managed bean? Managed Bean genelde pratik olarak her sayfanin is mantigini ve model nesnelerini icerir. Buna benzer bir dizayni asp.net ve code behind sayfalarinda da gorebiliriz. ASP.NET den farki bir sayfada bircok managed bean kullanabilir ve managed beanlerin illaki Page gibi bir sinifi extend etmesi gerekmez. Hemen bir ornek verelim.

Ornegin sayfada outputText bilesenini kullarak bir text yazdirmak istiyoruz, bunun icin;

isimizi gorecektir, peki Hello World textini sayfada hardcoded yazmak yerine server daki kodumuzdan nasil aliriz.

Demo adli bir sinifimiz olsun;

package com.cc.blog.jsfcalistay.view;

public class Demo {

private String text = “Hello World”;

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}
}
Ve bu sinifi WEB-INF/faces-config.xml dosyasinda su sekilde tanimlayalim;

demo
com.cc.blog.jsfcalistay.view.Demo
request

managed-bean-name = JSF IOC Containerinda bean’in hangi isimle ulasilabilecegini belirler.
managed-bean-class = Uzun class ismini JSF bean’i yaratirken kullanir
managed-bean-scope = Bean yaratildiktan sonra hangi scope da duracagini belirler, gecerli degerler, request, session ve application dir.

Hepsi bu kadar, simdi Demo nesnesinin text alanini sayfada gostermek icin;

Bu kismi biraz acalim; #{demo.text} bir JSF EL(Expression Language) ornegidir ve #{expression} seklindedir. Ornekteki expression demo.text yani demo sinifinin text ozelligi. Peki bu ozellige JSF ulasirken neler oluyor

1) #{demo.text} ifadesi goruldugunde JSF en soldaki elemani yani “demo” yu cozmek icin kendi IOC containerina bakar, biz “demo” adli bir managed bean tanimladigimiz icin bu tanim JSF tarafindan bulunur
ve managed-bean-class kullanilarak Demo sinifindan bir tane nesne olusturulur. JSF demo adli bean’i ararken request, session ve application scope’a bakar.
2) Olusan Demo nesnesi request scope’a konulur, yani request basindan sayfa tekrar yenilenene kadar adi “demo” olan bir Demo nesnesi request scope da yasayacaktir. Buradaki onemli bir nokta demo’ya tekrar ulasilmak istendiginde, JSF once requestte demo adli bir nesne varmi diye kontrol eder, varsa o nesneyi döndürür yoksa yeni bir tane yaratilir. Ornegin sayfada demo adli bean’e tekrar bir referans var, , daha onceden demo yaratilip request scope’a kondugu icin tekrar yaratilmaz ve onceki döndürülür.
3) Artik demo nesnesi olustuguna gore sira text ozelligine gelir. JSF bunun icin Demonun getText metodunu cagirir, bu durumda “Hello World” texti doner ve outputText bileseni bu degeri kullanarak
text sayfada gosterilebilir.

4) Sayfa refresh edildiginde, yeni bir request olacagi icin, islem 1 den itibaren tekrar baslayacaktir. Eger bean scope’u session olsaydi, yeni bir request’te bean session da yasamaya devam edecegi icin yeniden yaratilmayacakti. Temel mantik bu aslinda, eger bean tanimlandigi scope’da yoksa, yaratilir ve scope’una konur ve scope’unun izin verdigi kadar yasar.

managed

Managed Property

Managed property ozelligi sayesinde, dekleratif olarak bir bean ozelligi tanimlanabilir, ornek olarak;

demo
com.cc.blog.jsfcalistay.view.Demo
request

text
Hello World

Bu sayede demo nesnesi JSF tarafindan yaratildiginda otomatik olarak text ozelligi “Hello World” olarak atanir. Managed-Property ile text gibi basit degiskenleri degil, collection gibi daha karmasik yapilari da xml tabanli tanimlanabilir.

Notlar:
– JSF 1.2 ve JSP 2.1 ile birlikte, bu 2 çatinin Expression Language’i birlestirildi, JSF 1.2’de # ve $ birbirleri yerine kullanilabilir.
– Facelets kullanicilari da JSF 1.1 ortaminda # ve $ kullanabilir.
– Managed Bean’lerin illaki JSF IOC Container’inda yonetilecek diye bir kaide yoktur, managed beanleri Spring kullanarak
veya seam yardimiyla ejb olarak da kullanilabilir. Gelismis jsf-spring entegrasyon ornekleri icin Ingilizce bloguma bakabilirsiniz.
Spring 2.5’le gelen annotation destegi sayesinde xml’e bulasmadan JSF beanlerini kullanmak cok avantajli.

Alıntı :
http://www.jroller.com/cagataycivicitr/entry/managed_bean_kavrami

Reklamlar

Bir Yanıt to “Managed Bean Kavrami”

  1. JSF Nedir? | F@tih Durmus's WebBlog Says:

    […] Managed Beans (Backing Bean) yönetimi JSF ile ortaya çıkan bir kavramdır.Yaşam evreleri JSF IOC(Inversion Of Control) konteyner tarafından yönetilen JavaBean sınıfıdır.JSF ile hazırlanan bir sayfada birden çok Managed Bean kullanılmaktadır.JSF 2.0 ile birlikte sınıfların başında @MangedBean annotationını kullanarak ilgili beane erişim sağlanır.Daha eski versiyonlarında faces-config.xml dosyasında tanımlama yapmak gerekir. […]

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s


%d blogcu bunu beğendi: