自动装配同一类的两个不同的bean

时间:2010-12-16 15:35:45

标签: java spring annotations

我有一个包装连接池的类,该类从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;

2 个答案:

答案 0 :(得分:38)

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

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

答案 1 :(得分:35)

您可以将@Autowired@Qualifier合并,但在这种情况下,而不是@Autowired,我建议使用@Resource

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

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

甚至更简单:

@Resource
JedisConnector jedisConnector;

@Resource
JedisConnector jedisConnectorPOD;