1 package rest.db2; 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.data.jpa.repository.config.EnableJpaRepositories; 15 import org.springframework.orm.jpa.JpaTransactionManager; 16 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; 17 import org.springframework.transaction.PlatformTransactionManager; 18 import org.springframework.transaction.annotation.EnableTransactionManagement; 19 20 import com.zaxxer.hikari.HikariDataSource; 21 22 @Configuration 23 @EnableJpaRepositories(entityManagerFactoryRef = "secondEntityManagerFactory", 24 transactionManagerRef = "secondTransactionManager", basePackages = "rest.db2") 25 @EnableTransactionManagement 26 public class SecondDsConfig { 27 @Bean 28 @ConfigurationProperties("app.datasource.second") 29 public DataSourceProperties secondDataSourceProperties() { 30 return new DataSourceProperties(); 31 } 32 33 @Bean 34 @ConfigurationProperties("app.datasource.second.configuration") 35 public HikariDataSource secondDataSource() { 36 return secondDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class) 37 .build(); 38 } 39 40 @Bean(name = "secondEntityManagerFactory") 41 public LocalContainerEntityManagerFactoryBean secondEntityManagerFactory( 42 final EntityManagerFactoryBuilder builder, 43 @Qualifier("secondDataSource") DataSource dataSource) { 44 return builder.dataSource(secondDataSource()).packages("rest.db2").persistenceUnit("secondDb") 45 .properties(singletonMap("hibernate.hbm2ddl.auto", "create-drop")).build(); 46 } 47 48 @Bean(name = "secondTransactionManager") 49 public PlatformTransactionManager secondTransactionManager( 50 @Qualifier("secondEntityManagerFactory") EntityManagerFactory secondEntityManagerFactory) { 51 return new JpaTransactionManager(secondEntityManagerFactory); 52 } 53 }