Aylık arşivler: Şubat 2011

JSF Validator’larında Dependency Injection (ayrıca Spring ile)

Acayip bir dil in, Türkçe yine out. Dependency Injection’ı herkes kafasına göre Türkçeye çevirmiş ama bence en güzel ve geçerlisi şu abimin dediği “bağımlılık zerketme”.

Efenim JSF bize bean’lerimiz içerisinde validator metodlar tanımlama imkanı sunuyor olsa da, duruma özel validator’ları yeniden kullanılabilirlik açısından ayrı sınıflar halinde yazmak bence daha makul. Örneğin bir üye kayıt formunda kullanıcının girdiği eposta adresinin başka birisi tarafından kullanılıyor olup olmadığının kontrolünü formun arkasındaki bean üzerinden ya da ayrı bir (custom) validator üzerinden yapabiliriz. Bu kontrol bize yalnızca üye kayıt esnasında gerekiyorsa bean içinde tanımlamak uygun olabilir, bean ayrıca JSF tarafından yönetildiğinden, asıl sorguyu yapacağımız sınıfı JSF bize inject edecektir ve doğrudan sorgumuzu yapıp işi halledebiliriz. Ama örneğin başka bir kaç noktada daha verilen bir eposta adresinin veritabanında kayıtlı olup olmadığının kontrolü gerekebilir. Bu durumda, işlemi bir (custom) validator sınıfa koymak kod tekrarı yapmamak ve bu sınıfı gerektiği noktalarda kullanabilmek açısından gayet mantıklı.
Okumaya devam et

Spring Bean’lerine otomatik olarak Logger enjekte etmek

Öncelikle başlıkta bir kısmına şahit olduğunuz ve birazdan fazlasına maruz kalacağınız kötü Türkçe için sizden özür diliyorum.

Bir projede, log tutmak için SLF4J, Dependency Injection için de Spring kullanıyorken, bean’lerin SLF4J logger’larına statik olarak bağımlı olması yerine logger’ların bean’lere Spring ile enjekte etmenin daha güzel, aradaki bağımlılığı azaltıcı yönde bir yaklaşım olacağını düşündüm (enjekte edilecek loggerların SLF4J logger’ı olması gerekmiyor). Bunu nasıl yaparım diye düşünürken Spring’in tam da düşündüğüm gibi bir güzellik sağladığını, insanların da benden çok çok evvel o güzellikten bir çözüm elde ettiğini araştırırken buldum.

Spring’in BeanPostProcessor arayüzü (interface), kendimize has ilklendirme (instantiation), bağımlılık çözümleme (dependency-resolution) işlemleri yapabilmemiz için bize metodlar sağlıyor. Spring’in container’ı ilklendirme işlemini yaptıktan sonra biz de devreye girip bir takım işler yapmak istiyorsak, bu arayüzün bir gerçekleştirimini yapıp gerçekleştirimimizi Spring’e sunarak amacımıza ulaşıyoruz. Bizim senaryomuz ise şöyle. Spring container’i yarattığı bean’lerin bağımlılıklarını sağladıktan sonra, kontrolü bize verecek ve biz de bean’e logger enjekte edeceğiz.

Okumaya devam et