我正在開發一個Web應用程序,我需要兩個DataSource根據我的需求連接兩個差異數據庫。一個DataSource將使用Spring + JPA框架,另一個DataSource使用Spring + MyBatis框架。可以在Spring配置中配置兩個DataSoure嗎?
0
A
回答
1
是的,你可以建議管理從春天和從applicationContext獲得。
<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource" >
<property name="driverClassName" value="${database.driverClassName}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSourceOrderDetail" >
<property name="driverClassName" value="${database.driverClassName}"/>
<property name="url" value="${database.url.orderdetail}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</bean>
只需要有ID的不同的名稱,要恰當地注入
檢查this檢討如何能春季ibatis的整合,然後使用數據源豆
配置豆或者,如果您要使用datasource-ds.xml,只需將兩個datasource xml文件放在應用程序上下文中的lib文件夾中,如果你使用的是jboss或tomcat。
UPDATE
<jpa:repositories base-package="com.staples.sa.pricemart.repository.pag"
entity-manager-factory-ref="entityManagerFactory" />
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<qualifier value="pagTransactionManager" />
</bean>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactory">
<property name="persistenceUnitName" value="persistenceUnit" />
<property name="dataSource" ref="dataSource" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
<jpa:repositories base-package="com.staples.sa.pricemart.repository.orderdetail"
entity-manager-factory-ref="entityManagerFactoryOrderDetail" />
<bean id="transactionManagerOrderDetail" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryOrderDetail" />
<qualifier value="orderDetailTX" />
</bean>
<bean
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactoryOrderDetail">
<property name="persistenceUnitName" value="persistenceUnitOrderDetail" />
<property name="dataSource" ref="dataSourceOrderDetail" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
<!-- -->
的persistence.xml需要這個樣子。 (需要完成XML配置)
<persistence-unit name="persistenceUnit"
transaction-type="RESOURCE_LOCAL">
而且
<!-- Add the persistence context for OrderDetail -->
<persistence-unit name="persistenceUnitOrderDetail"
transaction-type="RESOURCE_LOCAL">
0
您可以爲通過聲明數據源豆,不同的ID在Spring上下文喜歡配置儘可能多的數據庫和 注入相應的屬性從屬性文件。如果兩個數據庫不同,那麼您處於分佈式事務的範圍內,並且您必須配置可以與JTA一起運行的Spring transaction manager。另外值得注意的是,Spring事務管理器僅僅是一個抽象概念,它需要配置外部JTA事務 管理器(如Bitrionix/Atomikos),或者如果在EE應用服務器上部署,則可以在JNDI註冊中心查找事務管理器。然後,當您標記事務邊界(可能使用Spring Transactional註釋)時,Spring將自動協調事務。
0
下面是示例代碼爲您
class Main {
public static void main(String args[]) throws Exception {
ApplicationContext ac = new ClassPathXmlApplicationContext("context.xml", Main.class);
DataSource dataSource = (DataSource) ac.getBean("dataSource");
DataSource mysqlDataSource = (DataSource) ac.getBean("mysqlDataSource");
的context.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@oracle.devcake.co.uk:1521:INTL"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://dbhost-prospring-psql/prospring"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
</bean>
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"/>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
相關問題
- 1. 我的iPhone可以配置兩個配置文件嗎?
- 2. 可以在couchdb配置中設置reduce_limit = false配置嗎?
- 3. 一個Spring PropertyPlaceholderConfigurer可以配置另一個嗎?
- 4. 我們可以重寫在另一個配置中的一個xml配置中聲明的spring bean嗎?
- 5. 在JBoss中我可以配置一個「共享庫」位置嗎?
- 6. 我們可以配置Spring根據請求的範圍來配置屬性嗎?
- 7. Spring支持JSON配置嗎?
- 8. 配置Spring Cloud配置
- 9. 我可以在配置文件中設置GPS配置的更改嗎?
- 10. Spring MVC請求映射,這可以動態/可配置嗎?
- 11. 帶兩個MVC配置的Spring Boot
- 12. 如何在基於Java的安全配置的Spring Security中配置兩個formLogin?
- 13. IIS 7配置 - 一切都可以通過web.config配置嗎?
- 14. packagesToScan在Spring配置
- 15. 多個構建配置可以共享一個配置轉換嗎?
- 16. 我可以在web.config中放置Remoting配置嗎?
- 17. 你可以在log4net配置中設置屬性值嗎?
- 18. 在Spring中配置Hibernate sessionFactory
- 19. 在Spring 3.1中配置JDO?
- 20. 你可以通過編程來配置Spring-Security嗎?
- 21. ApplicationContext可以自動掃描Spring配置類嗎?
- 22. Spring配置文件可以選擇@PropertySources嗎?
- 23. 我可以使用Spring 3.1.1配置圖塊3.0嗎?
- 24. Maven - 我可以在配置文件定義中引用配置文件ID嗎?
- 25. Spring配置
- 26. Spring ReloadableResourceBundleMessageSource配置
- 27. spring配置
- 28. spring bean配置
- 29. Spring配置
- 30. Spring jdbc配置
你能告訴我please.So怎麼樣春天的交易,它可以處理兩個2個數據源。 – 9ine
您需要針對不同的數據庫擁有不同的事務bean。 –
@PradeepKrKaushal是的,我認爲是。 – 9ine