Autowiring два разных beans того же класса
У меня есть класс, который обертывает пул соединений, класс получает данные о соединении из конфигурации spring, как показано ниже:
<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>
Этот bean позже используется в службе и автообновляется с аннотацией @Autowire
.
Мой вопрос в том, как я могу дублировать этот bean и предоставить ему различные сведения о подключении, а затем @Autowire
в службе.
значение В дополнение к выше я буду иметь:
<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>
и в сервисе:
@Autowired //bean of id jedisConnector
JedisConnector beanA;
@Autowired //bean of id jedisConnectorPOD
JedisConnector beanB;
Ответы
Ответ 1
Вы можете объединить @Autowired
с @Qualifier
, но в этом случае вместо @Autowired
, я предлагаю использовать @Resource
:
@Resource(name="jedisConnector")
JedisConnector beanA;
@Resource(name="jedisConnectorPOD")
JedisConnector beanB;
или даже проще:
@Resource
JedisConnector jedisConnector;
@Resource
JedisConnector jedisConnectorPOD;
Ответ 2
@Autowired
@Qualifier("jedisConnector")
JedisConnector beanA;
@Autowired
@Qualifier("jedisConnectorPOD")
JedisConnector beanB;