Bean Scope Kullanımı

Bean Scope Kullanımı

İlk konu olarak girdiğim bir mülakatta bilemediğim JAVA Bean Scope kullanımı hakkında olacak.

Bean Nedir ?

Bean, java spring’in iskeletini oluşturan objeler diyebiliriz. IoC containerları tarafından yönetilen objelere bean denir. Buradaki amaç projenin her yerinde farklı farklı yönetimi zorlaştıracak nesneler üretmek yerine bunu tek bir koldan yönetilmektir. Bu şekilde bağımlılıkları en aza indirmek hedeflenir.

Bean Scope nedir?

Bean scope’lar yukarıda belirttiğimiz beanlerin yaşam sürelerini tanımladığımız anotasyonlardır. Bu şekilde tek bir yerden oluşturulan bean için oluşturulan instance mı kullanılsın ? Ne zaman yeni bir instance oluşsun? gibi tanımlamaları yapabiliriz. 5 farklı scope bulunmaktadır.

Günümüzden örnek vermek gerekirse bir elbise odanızın(Container) olduğunu düşünün. Dışarı çıkarken giymek için bir pantolon alıyorsunuz(instance üretme) bunu kullanıyorsunuz sonra tekrar kullanmak için yerine koyup tekrar tekrar(singleton) kullanabiliyorsunuz. Bu şekilde daha az masraf yapmış oluyorsunuz ancak bir kere kullandığınız maskeyi atıp sonrasında yenisini kullanmanız gerekiyor. Bu şekilde her seferinde yeni bir maske(prototype) almak zorunda oluyorsunuz. Günümüz ile ilgili böyle bir örnek verebiliriz.

1- Singleton(varsayılan)

Hiç bir scope belirtmezsek varsayılan bean scope singleton dir. Bir instance üretildiğinde container içinde saklanır. Herhangi bir ihtiyaç halinde yeni bir instance üretmek yerine bu instance kullanılır. Singleton desing pattern gibi düşünebilirsiniz.

2- Prototype

Scope olarak Prototype belirttiğimiz bean’lerde her kullanılmak istendiğinde yeni bir instance üretilmesi sağlanır.

3- Request

Web tabanlı uygulamalarda kullanılır. HTTP istediği geldiği anda instance üretilmesi sağlanır.

4- Session

Web tabanlı uygulamalarda kullanılır. HTTP session oluştuğunda instance üretilmesi sağlanır

5- Global-Session

Web tabanlı uygulamalarda kullanılır. HTTP isteği geldiğinde sadece bir tane instance üretilmesi sağlanır. Her seferinde aynı instance kullanılmaktadır.

Örnek Kullanımı

@Scope("prototype")

public class Personal{
...
}

Codest Blog

Codest Blog yazılım hakkında her konuda bilgi sağlayan bir blog sitesidir. Bilgi paylaştıkça güzeldir felsefesi ile hareket ederek, yazılımcıların en cok karşılaştığı konuları sizlere aktarmayı hedefliyoruz. Keyifli okumalar 🙂