これを行うには、通常の春のプロパティを使用することはできません。あなただけの1 DB拾う自動無効にする必要が
まず:ここでは、(あなたが必要な場合は以上)は2つのデータベースに接続する方法の例です
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class})
は、そして今、あなただけに持っていますJPAとデータソースに独自の構成を提供します。
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "ds1EntityManagerFactory",
transactionManagerRef = "ds1TransactionManager",
basePackageClasses = Ds1Repository.class)
public class DataSource1Config {
@Bean
PlatformTransactionManager ds1TransactionManager() {
return new JpaTransactionManager(tfccgEntityManagerFactory().getObject());
}
@Bean
LocalContainerEntityManagerFactoryBean ds1EntityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(ds1());
factoryBean.setJpaVendorAdapter(vendorAdapter);
factoryBean.setPackagesToScan(Ds1Entity.class.getPackage().getName());
factoryBean.getJpaPropertyMap().put("hibernate.dialect", dialect);
factoryBean.getJpaPropertyMap().put("hibernate.show_sql", showSQL);
factoryBean.getJpaPropertyMap().put("hibernate.globally_quoted_identifiers", quoteIdentifiers);
return factoryBean;
}
@Bean
DataSource ds1() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driverClass);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setTestOnBorrow(testOnBorrow);
dataSource.setMaxTotal(maxTotal);
dataSource.setInitialSize(initialSize);
dataSource.setMaxIdle(maxIdle);
return dataSource;
}
}
はあなたがtransactionManager
entityManagerFactory
とdatasource
とoの第2のセットを持っていますどのds2
データソースのために、このクラスのコピーを持つことができますnを使用すると、異なるパッケージのJPAリポジトリとエンティティスキャンを有効にし、異なる名前のBeanに名前を付けます。データソースURLに
@Transactional(transactionManager = "ds1TransactionManager")
:あなたはメソッドでトランザクション分離が必要な場合には2を持っていると思いますので、
その後、あなたは
transactionManager
名前を提供する必要があります – Ulises