1 package rest.db1; 2 3 import static java.util.Collections.singletonMap; 4 5 import javax.persistence.EntityManagerFactory; 6 import javax.sql.DataSource; 7 8 import org.springframework.beans.factory.annotation.Qualifier; 9 import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; 10 import org.springframework.boot.context.properties.ConfigurationProperties; 11 import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; 12 import org.springframework.context.annotation.Bean; 13 import org.springframework.context.annotation.Configuration; 14 import org.springframework.context.annotation.Primary; 15 import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 16 import org.springframework.orm.jpa.JpaTransactionManager; 17 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; 18 import org.springframework.transaction.PlatformTransactionManager; 19 import org.springframework.transaction.annotation.EnableTransactionManagement; 20 21 import com.zaxxer.hikari.HikariDataSource; 22 23 @Configuration 24 @EnableJpaRepositories(entityManagerFactoryRef = "firstEntityManagerFactory", 25 transactionManagerRef = "firstTransactionManager", basePackages = "rest.db1") 26 @EnableTransactionManagement 27 public class FirstDsConfig { 28 @Primary 29 @Bean 30 @ConfigurationProperties("app.datasource.first") 31 public DataSourceProperties firstDataSourceProperties() { 32 return new DataSourceProperties(); 33 } 34 35 @Primary 36 @Bean 37 @ConfigurationProperties("app.datasource.first.configuration") 38 public HikariDataSource firstDataSource() { 39 return firstDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class) 40 .build(); 41 } 42 43 @Primary 44 @Bean 45 public LocalContainerEntityManagerFactoryBean firstEntityManagerFactory( 46 EntityManagerFactoryBuilder builder, @Qualifier("firstDataSource") DataSource dataSource) { 47 return builder.dataSource(dataSource).packages("rest.db1").persistenceUnit("firstDb") 48 .properties(singletonMap("hibernate.hbm2ddl.auto", "create-drop")).build(); 49 } 50 51 @Primary 52 @Bean 53 public PlatformTransactionManager firstTransactionManager( 54 @Qualifier("firstEntityManagerFactory") EntityManagerFactory firstEntityManagerFactory) { 55 return new JpaTransactionManager(firstEntityManagerFactory); 56 } 57 }