2012-11-25 66 views
0

我有一個通用項目依賴於稱爲application1的應用程序。我以這種方式配置了xmls,每個項目都有一個獨特的jdbc屬性文件(不同的文件名),它指向不同的數據庫。 Postgres和MySQL。我創建了下面的代碼片段:春季休眠兩個不同的DAO連接

@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的配置,在共applicationContext.xml中和在 mysql.jdbc.properties配置。

爲什麼使用eclipse進行調試,我發現dao和daoApplicatio1是相同的對象?他們應該嗎? 如何在屏幕上打印每個dao對象背後的連接和屬性?

預先感謝

EDIT(1)

從共同的項目:

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

來自應用程序1的項目:

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 
    } 
+0

請顯示「dao」。 – yair

回答

0

顯然解決了這個問題,我可以同時有兩個單獨的連接生活在春/休眠應用程序。如果有人感興趣,請給我留言。