2012-12-07 15 views
24

Fasulyelerin somutlaştırılacağı düzeni belirlemek için herhangi bir yer var mı? Yani, diğer fasülyelerin, benzer başlangıç ​​dizilimlerinden önce belirli çekirdeklerin çıkarılmasını istiyorum.Yay 3 fasülye somutlaştırma dizisi

Yay 3.2 ve ek açıklama tabanlı bildirim yöntemini kullanıyorum.

+0

Benim uygulamada xml config dosyasındaki sıraya göre sıralama sırasına eşittir. Ancak istisnalar olabilir .. Kod kokusu açıklaması için –

cevap

52

fasulye bir sonra sipariş <property/>, @Autowired veya <constructor-arg/> tanımlayarak fasulye B bağlıdır, yay kabı tarafından zorlanır ve sabitlenir. Burada sorun yok.

Ama açık bağımlılıklar kullanmaktan çekinmeyin aracılığıyla ifade edilmez fasulye yaratılış belirli düzen uygulamak istiyorsanız:

<bean id="A" depends-on="B"/> 
<bean id="B"/> 

veya daha iyisi (ek açıklamalarla, @Bean Java yapılandırma ile de çalışır):

veya daha iyisi ... kullanmayın. Bu yapılar bir kod kokusudur ve çoğu zaman bileşenleriniz arasında bazı kötü görünmez bağımlılıklar olduğunu gösterir.

+5

+1 – ElderMael

3

Fasulyenizdeki Sipariş arayüzünü diğer fasulyelere göre sipariş tanımlamak için kullanabilirsiniz.

5

Tomasz tarafından sağlanan yanıtla kabul edildi. Fasulyenin B fasulyesine bağlı olduğunu biliyorsanız, bu doğru bir yaklaşımdır.

Bazen, tüm fasülyenin somutlaştırılmasından önce yapılması gereken mantığa sahipsiniz. Bu durumda BeanFactoryPostProcessor'u kullanabilirsiniz. Spring, BeanFactoryPostProcessors'u önce ve sonra sadece tüm diğer fasulyeleri yaratır ve yürütür. Aynı zamanda BeanFactoryPostProcessor'unuz bazı fasulye A'ya bağlıysa, mülk veya yapıcı enjeksiyonu kullanabilirsiniz. Bu durumda, ilk önce Bean A'yı, daha sonra BeanFactoryPostProcessor'u BeanFactoryPostProcessor'u arayacak ve bundan sonra da tüm diğer fasulyeleri bağlamda tasvir edecektir.

+0

Bir system properties dosyasından spring.active.profile ayarını yapmak için bunu kullandım. Harika çalışıyor! –