2011-04-08 18 views
8

Lütfen bana tavsiyede bulunabilirsiniz, Hazırda bekleyen varlıklar için Bahar otomatik kablo bağlantısını nasıl güzelleştirebilirim?Hibernate varlık autowire

@Entity 
public class EmailActivity extends Activity { 
    @Autowired @Transient 
    private JavaMailSender javaMailSender; 

    ... 
} 

benim DAO'sunda

AutowireCapableBeanFactory.autowireBean(
    getCurrentSession().get(Activity.class, id) 
); 

yapıyor daha iyi bir yolu var mı:

ı bir varlık var ve orada posta gönderen istiyorum, söylememe izin ver?

Teşekkürler!

+1

Posta göndereni varlığa eklemek tuhaf bir seçim gibi görünüyor. Bu yaklaşımı neden istediğin hakkında biraz daha tarif edebilir misin? Olayı geçici olarak işaretlediğinden bu yana devam ettirmek mümkün değildir ve aktif kayıt gibi anemik olmayan bir model kullandığınız için geçerli değildir (bir DAO'dan bahsetmiş olduğunuzdan). Posta göndereni neden e-postalanacak uygun etkinlik verilerini iletmek üzere bir yöntemle yönetici/hizmet katmanına enjekte etmiyor? – Jeff

+0

ilgili: http://techblog.bozho.net/?p=180 – Bozho

+0

Posta gönderen bir altyapı olduğunu düşünüyorum. Alan modeli –

cevap

9

Bu mümkün! (Ve bu, Spring Roo'daki varsayılan stildir!)

İhtiyacınız olan her şey, Varlıklarınıza @ Yapılandırılabilir ek açıklama eklemek. <context:spring-configured/> yapılandırmasında ve AspectJ dokumasını kullanarak ek açıklamaları etkinleştirin. ,

BTW şiddetle AspectJ zamanı, dokumayı derlemek kullanmayı öneriyoruz: 7.8.1 Using AspectJ to dependency inject domain objects with Spring

Ayrıca bkz:

Bahar Referans bir bölüm vardır mümkün olunca.

2

Bunu yaptığım gibi AutowiredAnnotationBeanPostProcessor kullanmaktır.

İşletmenizin yapıcısında, AutowiredAnnotationBeanPostProcessor'dan "bunu" enjekte etmesini istersiniz.

Açıklamalarımın sonunda this article tekniği tekniktir. Makale, Hibernate varlıklarını otomatik olarak kullanan benzer bir yöntemden bahsediyor.

2

yani hazırda LoadEventListener kullanarak, AspectJ'yi-dokumayı kullanarak daha iyi bir yolu var gibi gözüküyor, this post açıklanmıştır.