由于和第三方对接,需要使用一个统计库,所以增加数据源配置
1.增加application-***.properties文件配置
# 统计库
spring.statistic.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.statistic.datasource.url=jdbc:oracle:thin:@192.168.***:1521/orcl
spring.statistic.datasource.username=username
spring.statistic.datasource.password=password
2.修改DataSourceConfig
package 略
import 略
@Configuration
class DataSourceConfig {
@Bean("略")
@Primary
@Qualifier("略")
@ConfigurationProperties(prefix = "略") //将prefix前缀的配置注入,实现属性绑定,一般和@Bean或@Component一起使用
fun mainDataSource(): DataSource = DataSourceBuilder.create().build()
@Bean("statisticDataSource")
@Qualifier("statisticDataSource")
@ConfigurationProperties(prefix = "spring.statistic.datasource")
fun statisticDataSource(): DataSource = DataSourceBuilder.create().build()
}
3.增加jpaConfig
package 略
import 略
@Configuration
@EnableTransactionManagement //开启事务支持
@EnableJpaRepositories(entityManagerFactoryRef = "statisticEntityManagerFactory", transactionManagerRef = "statisticTransactionManager",
basePackages = arrayOf("***.repository.statistic")) //开启jpa支持,指定Repository工厂,事务管理工厂,Repositories所在的包
class StatisticJpaConfig {
@Autowired
private lateinit var jpaProperties: JpaProperties
@Autowired
@Qualifier("statisticDataSource")//指明数据源
private lateinit var statisticDataSource: DataSource
@Bean("statisticEntityManagerFactory")
fun statisticEntityManagerFactory(builder: EntityManagerFactoryBuilder): LocalContainerEntityManagerFactoryBean = builder.dataSource(statisticDataSource).properties(getVendorProperties(statisticDataSource)).packages("***.server.model.statistic", "***.server.model.common").persistenceUnit("StatisticPersistenceUnit").build() //设置数据源和实体类位置
private fun getVendorProperties(dataSource: DataSource): Map<String, String> = jpaProperties.getHibernateProperties(dataSource)
@Bean("statisticTransactionManager")
fun statisticTransactionManager(builder: EntityManagerFactoryBuilder): PlatformTransactionManager = JpaTransactionManager(statisticEntityManagerFactory(builder).`object`)
}