Merhaba, Spring'te XML configuration kullanarak List,Set gibi arayüzlere ArrayList,HashSet gibi sınıflardan oluşmuş nesneleri atayabiliyoruz. Aşağıdaki kod örneğindeki gibi List arayüzüme atanacak nesnenin özelliklerini belirtebiliyorum. Daha sonra atama işlemini Spring kolaylıkla yapabiliyor.

<property name="addressList">
     <list>
        <value>INDIA</value>
        <value>Pakistan</value>
        <value>USA</value>
        <value>USA</value>
     </list>
</property>

Benim sorum ise şu; anotasyon tabanlı geliştirme yapan birisi tanımladığı List arayüzüne bir anotasyon (örneğin @Autowired) ile boş bir ArrayList nesnesini atama işlemi yapabilir mi?

Sorumun sebebi ise Spring'in bizi new anahtar kelimesinden aslında koparmış olması. Dolayısıyla bu tarz veri yapılarını kullanırken List list = new ArrayList(); gibi tanımlama yapıyorum. Bu nedenle yaptığım şeyin sanki yanlış olduğuna dair hisse kapılıyorum.

Bu konuda nasıl bir yol izlenmelidir?

soruldu: 10 Ağu, 04:02

ugurcanlacin's gravatar image

ugurcanlacin
816101625
cevap kabul oranı: 11%

1

@Autowired List<t> customList;

gibi initiliaze ediliyor bildiğim.

(10 Ağu, 08:40) Turgay Can Turgay%20Can's gravatar image

Yorum için teşekkürler. Peki atanacak implementasyon olarak LinkedList istiyorsam bunu nasıl belirtebilirim?

(10 Ağu, 09:28) ugurcanlacin ugurcanlacin's gravatar image

Çalışma zamanında List<t> referansına atanabilecek bir bean olduğu sürece @Autowired kullanabilirsin. Listeyi içeren bean'i nasıl yaratabilirim diye sorarsan util şemasını kullanabilirsin:

<util:list id="emails" list-class="java.util.LinkedList">
    <value>jackshaftoe@vagabond.org</value>
    <value>eliza@thinkingmanscrumpet.org</value>
    <value>vanhoek@pirate.org</value>
    <value>d'Arcachon@nemesis.org</value>
</util:list>

Aynı tanımlamayı Java kodu içerisinde @Bean anotasyonunu kullanarak da yapabilirsin.

Spring kullanıyorsak asla new ile nesne yaratmamalıyız gibi bir düşünceye gerek yok. Nesne yaratma işini Spring'e devretmenin en önemli amacı dependency injection prensibini uygulayabilmektir. Basit listeler gibi sınıfın kullandığı veri tutan nesneleri new ile yaratabilirsin, bunda herhangi bir sakınca yoktur. Doğru yapıp yapmadığını birim test yazarak kontrol edebilirsin. Eğer sınıfı doğru yazılmış birim testlerle test edebiliyorsan bir sorun yok. Ama içeride new ile yaratıp kullandığın bir nesne birim test yazmana engel oluyorsa o zaman düzeltmen gereken şeyler var demektir.

permanent link

cevaplandı: 10 Ağu, 17:07

stozlu's gravatar image

stozlu
32633
cevap kabul oranı: 40%

Yorumunuz için teşekkür ederim.

(11 Ağu, 02:59) ugurcanlacin ugurcanlacin's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×128
×5
×3

Soruldu: 10 Ağu, 04:02

Görüntüleme: 148 kez

Son güncelleme: 11 Ağu, 02:59

powered by BitNami OSQA