0

我有一个公共项目,它依赖于一个名为 application1 的应用程序。我以这种方式配置了每个项目都有一个不同的 jdbc 属性文件(不同的文件名)的 xml,该文件指向不同的数据库。Postgres 和 MySQL。我创建了以下代码段:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/applicationContext.xml", "/common-applicationContext.xml"})
@Transactional
public class AppTest extends AbstractTransactionalJUnit4SpringContextTests{
    static Logger log = Logger.getLogger(App.class.getName());
    @Resource(name = "testDao")
    private IDAO dao;//Traces testDao, which originates in common package
    @Resource(name = "testApplication1Dao")
    private IDAO daoApplication1;//Traces dao from application1 package
    @Test
    public void AppContextTest(){
        SessionFactory sf1 = dao.getHibernateTemplate().getSessionFactory();
        SessionFactory sf2 = daoApplication1.getHibernateTemplate().getSessionFactory();
  1. TestDao 和 TestApplication1Dao 类是对 IDAO 的扩展。通用接口。
  2. testApplication1Dao->Postgres,在applicationContext.xml和pgsql.jdbc.properties中配置
  3. testDao->Mysql,配置在common-applicationContext.xml和mysql.jdbc.properties中。

为什么用eclipse调试,我看到dao和daoApplicatio1是同一个对象?他们应该吗?如何在屏幕上打印每个 dao 对象背后的连接和属性?

提前致谢

编辑(1)

来自普通项目:

import org.springframework.stereotype.Repository;
@Repository("testDao")
public class TestDao extends AbstractDao {}

从 application1 项目:

import org.springframework.stereotype.Repository;
import gr.org.infrastructure.common.db.AbstractDao;
@Repository("testApplication1Dao")
public class TestApplication1Dao extends AbstractDao {}

AbstractDao 是 IDAO 的扩展(接口),没什么奇怪的......:

@Transactional(propagation=Propagation.REQUIRED)
public abstract class AbstractDao implements IDAO {
    private HibernateTemplate hibernateTemplate;
    private boolean rollbacked;

    public AbstractDao() {
        super();
        this.rollbacked = false;
        // TODO Auto-generated constructor stub
    }
4

1 回答 1

0

显然解决了这个问题,我可以在 spring/hibernate 应用程序中同时拥有两个单独的连接。如果有人有兴趣给我留言。

于 2012-12-19T15:39:35.750 回答