#mybatis #spring-mybatis
Вопрос:
Я пытаюсь настроить свое приложение Spring Boot с несколькими базами данных, и мне удалось найти хороший способ для такого DataSource
вида.
@DataSourceDb1
@Bean
@ConfigurationProperties(prefix = "application.db1.datasource.hikari")
public DataSource dataSourceDb1(@DataSourceDb1 DataSourceProperties dataSourceProperties) {
return dataSourceProperties
.initializeDataSourceBuilder()
.type(HikariDataSource.class)
.build();
}
Теперь я пытаюсь настроить a SqlSessionFactory(Bean)
из экземпляра MybatisProperties
, загруженного из application.yaml
.
application:
db1:
datasource: # irrelevant
jpa: # irrelevant
mybatis:
configuration:
map-underscore-to-camel-case: true
configuration-properties:
a: b # just for debugging
mapper-locations: db1/sql/mapper/**/*.xml
Я успешно загрузил MybatisProperties
вот так.
@SqlMapperDb1
@Bean
@ConfigurationProperties(prefix = "application.db1.mybatis")
MybatisProperties mybatisPropertiesDb1() {
final MybatisProperties mybatisProperties = new MybatisProperties();
return mybatisProperties;
}
И я также достиг следующего состояния.
@SqlMapperDb1
@Bean
public SqlSessionFactory sqlSessionFactoryDb1(
@Db1 final DataSource dataSource,
@SqlMapperDb1 final MybatisProperties mybatisProperties) throws Exception {
final SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
//factoryBean.setVfs(SpringBootVFS.class);
factoryBean.setDataSource(dataSource);
factoryBean.setConfiguration(mybatisProperties.getConfiguration());
factoryBean.setConfigurationProperties(mybatisProperties.getConfigurationProperties());
// TODO: set more from the properties // <<<<<<<<<<<-----!!!!!
return factoryBean.getObject();
}
Есть ли какой-нибудь хороший способ настроить factoryBean
из mybatisProperties
того, что определено в application.yaml
файле?
Так же, как и то, как
return dataSourceProperties
.initializeDataSourceBuilder()
.type(HikariDataSource.class)
.build();