我有一个Spring应用程序,它同时连接到两个数据库。因此,对于每个连接,我都有这两个LocalSessionFactoryBean实例,如下所示:

@Bean
public LocalSessionFactoryBean firstSessionFactory() {
    final LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();
    lsfb.setPackagesToScan("ro.mycompany.myproject.classes");
    lsfb.setDataSource(dataSourceOne);
    lsfb.setEntityInterceptor(auditInterceptor1);
    lsfb.setHibernateProperties(getHibernateProperties1());
    return lsfb;
}

@Bean
public LocalSessionFactoryBean secondSessionFactory() {
    final LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();
    lsfb.setPackagesToScan("ro.mycompany.myproject.classes2");
    lsfb.setDataSource(dataSourceTwo);
    lsfb.setEntityInterceptor(auditInterceptor2);
    lsfb.setHibernateProperties(getHibernateProperties2());
    return lsfb;
}

对于DAO层,我有一个像这样注入SessionFactory对象的类。
public class GenericDAOImpl extends HibernateDAOSupport implements GenericDAO {
     @Autowired
     private SessionFactory sessionFactory;
     //Other methods goes here
}

我像这样在我的配置文件中实例化bean:
@Bean
public GenericDAO firstGenericDAO() {
    final GenericDAOImpl genericDAO = new GenericDAOImpl();
    return genericDAO;
}

@Bean
public GenericDAO secondGenericDAO() {
    final GenericDAOImpl genericDAO = new GenericDAOImpl();
    return genericDAO;
}

如何在不创建setters方法的情况下使firstGenericDAO使用firstSessionFactory以及secondGenericDAO使用secondSessionFactory?我想同时使用两个连接,所以Spring配置文件也不会帮我。
谢谢

最佳答案

除了@Qualifier("...")之外,还可以使用@Autowired,或者只使用@Resource(name = "...")。就我个人而言,我更喜欢使用@Resource,因为它用一个替换了两个注释。

在您的情况下,分别为@Resource(name = "firstSessionFactory")@Resource(name = "secondSessionFactory")

09-30 13:55
查看更多