1 可配置啥类型的数据源?
1.1 数据源相关
DataSource(根据选择的连接池实现决定),SB默认的数据源:
java
@Slf4j
@SpringBootApplication
public class BestPractiseApplication implements CommandLineRunner {
@Autowired
private DataSource dataSource;
@Override
public void run(String... args) throws Exception {
showConnection();
}
public static void main(String[] args) {
SpringApplication.run(BestPractiseApplication.class, args);
}
private void showConnection() throws SQLException {
Log.info(dataSource.toString()); // dataSource: "HikariDataSource (HikariPool-1)"
Connection connection = dataSource.getConnection();
Log.info(connection.toString());
connection.close();
}
}
1.2 事务相关(可选)
- Platform TransactionManager(DataSource TransactionManager)
- TransactionTemplate
1.3 操作相关(可选)
- Jdbc Template
2 SpringBoot默认配置
2.1 DataSourceAutoConfiguration
配置DataSource
2.2 DataSourceTransactionManagerAutoConfiguration
配置DataSource TransactionManager
2.3 Jdbc' TemplateAutoConfiguration
配置JdbcTemplate
2.4 符合条件时才进行配置
2.5 数据源相关配置属性
yaml
spring:
datasource:
# 通用
url: jdbc:mysql://localhost/test
username: dbuser
password: dbpass
driver-class-name: com.mysql.jdbc.Driver (可选)
# 初始化内嵌数据库
initialization-mode: always # embedded | always | never
schema: # 初始化schema文件
data: # 初始化data文件
platform: mysql # hsqldb | h2 | oracle | mysql | postgresql (与前者对应)
以上是配置单数据源。
3 多数据源配置
3.1 注意事项
① 分离不同的数据源配置
② 关注每次使用的数据源
- 有多个DataSource时系统咋判断
- 对应的设施(事务、ORM等)咋选DataSource
手工配置两组DataSource及相关内容
与Spring Boot协作 (二选一)
- 配置@Primary类型的Bean
- 移除Spring Boot的自动配置:
- DataSourceAutoConfiguration
- DataSourceTransactionManagerAutoConfiguration
- Jdbc TemplateAutoConfiguration
java
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class
})