2010-12-16 8 views
26

tengo una clase que envuelve un pool de conexiones, la clase obtiene sus datos de conexión de una configuración de resorte como se muestra a continuación:Autowiring dos granos diferentes de una misma clase

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

Este bean se utiliza más adelante en un servicio y está autoconectado con la anotación @Autowire.

Mi pregunta es, ¿cómo puedo duplicar este grano y darle diferentes detalles de conexión y luego @Autowire en el servicio. significado Además de lo anterior que tendrá:

<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> 

y en el servicio:

@Autowired //bean of id jedisConnector 
JedisConnector beanA; 

@Autowired //bean of id jedisConnectorPOD 
JedisConnector beanB; 

Respuesta

33

Puede combinar @Autowired con @Qualifier, pero en este caso en lugar de @Autowired, se sugiere emplear @Resource:

@Resource(name="jedisConnector") 
JedisConnector beanA; 

@Resource(name="jedisConnectorPOD") 
JedisConnector beanB; 

o incluso más simple:

@Resource 
JedisConnector jedisConnector; 

@Resource 
JedisConnector jedisConnectorPOD; 
+3

El segundo solo funciona si los símbolos de depuración están disponibles. – OrangeDog

+1

Además, si también utiliza un servidor de aplicaciones JEE (por ejemplo, JBoss), también intentará procesar @Resource y todo se romperá. – OrangeDog

+0

@OrangeDog: Utilizo esto con JBoss sin ningún problema. – skaffman

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

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

Basado en http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s11.html Esta es la respuesta más correcta. – sancho21

Cuestiones relacionadas