0

在 spring (3.2) 中重用其他包含 spring-annotated 类的 jar 的首选方法是什么?

问题示例:我有一个具有@Autowired SessionFactory 的 jar,但它需要与应用程序的其余部分不同的会话工厂(它与不同的数据库通信)

所以,如果我只是把那个 jar 放在我的类路径中,应用程序将不会启动,因为有 2 个具有相同类型/名称的 bean。我需要将该 jar 与应用程序的其余部分隔离。如何做到这一点?

4

1 回答 1

1

当存在多个候选者时选择特定 bean 由 解决@Qualifier。只需在应用程序上下文中声明相同的 bean 并为它们分配不同的 id 或限定符名称。让我们看一下这个类:

public class Foo{

     @Autowired
     private SessionFactory sessionFactory;
}

假设两者SessionFactoryImpl1SessionFactoryImpl2都是 bean 连接的候选对象,并且您希望将 sessionFactory 指向SessionFactoryImpl1实例,那么您需要添加@Qualifier注释,如下例所示:

public class Foo{

     @Autowired
     @Qualifier("sessionFactory1")
     private SessionFactory sessionFactory;
}

在您的应用程序上下文中

<bean class="example.SessionFactoryImpl1">
    <qualifier value="sessionFactory1"/>
    <!-- inject any dependencies required by this bean -->
</bean>

<bean class="example.SessionFactoryImpl2">
    <qualifier value="sessionFactory2"/>
    <!-- inject any dependencies required by this bean -->
</bean> 
于 2013-04-12T02:33:49.113 回答