application1 というアプリケーションに依存する 1 つの共通プロジェクトがあります。このように、各プロジェクトが異なるデータベースに転送する個別の 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();
- クラス TestDao および TestApplication1Dao は、IDAO を拡張しています。共通インターフェース。
- testApplication1Dao->Postgres、applicationContext.xml および pgsql.jdbc.properties で構成
- common-applicationContext.xml および mysql.jdbc.properties で構成された testDao->Mysql。
なぜ 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 ( interface ) の拡張であり、奇妙なことは何もありません...:
@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
}