gpt4 book ai didi

java - 不同 spring bean 实例的相同类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:13 25 4
gpt4 key购买 nike

我有一个同时连接到两个数据库的 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 层,我有一个像这样注入(inject) 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;
}

如何在不创建 setter 方法的情况下使 firstGenericDAO 使用 firstSessionFactory 并让 secondGenericDAO 使用 secondSessionFactory?我想同时使用这两个连接,因此 Spring 配置文件也无济于事。谢谢

最佳答案

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

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

关于java - 不同 spring bean 实例的相同类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34991189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com