Spring数据源配置

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协作 (二选一)

  1. 配置@Primary类型的Bean
  2. 移除Spring Boot的自动配置:
    • DataSourceAutoConfiguration
    • DataSourceTransactionManagerAutoConfiguration
    • Jdbc TemplateAutoConfiguration
java 复制代码
@SpringBootApplication(exclude = {
    DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class,
    JdbcTemplateAutoConfiguration.class
})
相关推荐
东风破_5 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
嘻哈∠※5 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
卷无止境6 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
白狐_7986 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2587 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅7 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
卷无止境7 小时前
FastAPI 的Admin面板生态
后端·python
捡田螺的小男孩8 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员
IT_陈寒8 小时前
Redis集群这个坑,差点让我通宵
前端·人工智能·后端
极创信息9 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate