web-dev-qa-db-fra.com

Câblage automatique de deux beans différents de la même classe

J'ai une classe qui encapsule un pool de connexions, la classe obtient ses détails de connexion à partir d'une configuration de ressort comme indiqué ci-dessous:

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

Ce bean est ensuite utilisé dans un service et est câblé automatiquement avec le @Autowire annotation.

Ma question est de savoir comment dupliquer ce bean et lui donner différents détails de connexion, puis @Autowire dans le service. ce qui signifie En plus de ce qui précède, j'aurai:

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

et au service:

@Autowired //bean of id jedisConnector
JedisConnector beanA;

@Autowired //bean of id jedisConnectorPOD
JedisConnector beanB;
31
Noam Nevo

Vous pouvez combiner @Autowired avec @Qualifier, mais dans ce cas au lieu de @Autowired, Je suggère d'utiliser @Resource:

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

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

ou encore plus simple:

@Resource
JedisConnector jedisConnector;

@Resource
JedisConnector jedisConnectorPOD;
37
skaffman
@Autowired
@Qualifier("jedisConnector")
JedisConnector beanA;

@Autowired
@Qualifier("jedisConnectorPOD")
JedisConnector beanB;
39
OrangeDog