2010-12-16 10 views
26

aynı sınıfın iki farklı fasulye Autowiring @Autowire ek açıklama ile otomatik olarak ayarlanır.aşağıda gösterilen bir bağlantı havuzu sarar bir sınıf, sınıf bir yay yapılandırmasından ile bağlantısı ayrıntılarını alır gibi

Sorum şu ki, bu fasülyeyi nasıl kopyalayabilirim ve farklı bağlantı ayrıntıları verebilir ve daha sonra serviste @Autowire'u kullanabilirim.

<bean id="jedisConnectorPOD" class="com.legolas.jedis.JedisConnector" init-method="init" destroy-method="destroy"> 
     <property name="host" value="${jedis.pod.host}" /> 
     <property name="port" value="${jedis.pod.port}" /> 
    </bean> 

ve hizmet: Yukarıdakilere ek olarak anlamı ben olacak

@Autowired //bean of id jedisConnector 
JedisConnector beanA; 

@Autowired //bean of id jedisConnectorPOD 
JedisConnector beanB; 

cevap

33

Sen @Qualifier ile @Autowired birleştirebilirsiniz, ancak bunun yerine @Autowired bu olayda ben @Resource kullanmanızı öneririz:

veya daha da basit:

@Resource 
JedisConnector jedisConnector; 

@Resource 
JedisConnector jedisConnectorPOD; 
+3

İkincisi, yalnızca hata ayıklama sembolleri varsa çalışır. – OrangeDog

+1

Ayrıca, bir JEE uygulama sunucusu (ör. JBoss) kullanıyorsa, ayrıca @Resource işlemeye çalışacak ve her şey kırılacak. – OrangeDog

+0

@OrangeDog: Bunu herhangi bir sorun olmadan JBoss ile kullanıyorum. – skaffman

32
@Autowired 
@Qualifier("jedisConnector") 
JedisConnector beanA; 

@Autowired 
@Qualifier("jedisConnectorPOD") 
JedisConnector beanB; 
+0

http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s11.html adresinden alınmıştır. Bu en doğru cevaptır. – sancho21

İlgili konular