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
})
相关推荐
aramae7 分钟前
模拟实现memset()(C语言)
c语言·开发语言·后端
OxYGC19 分钟前
[AI工程] Spring AI 第十四篇:Agent 五种模式在 2.0 里怎么写
java·spring·ai·ai编程
code2cat20 分钟前
【随笔】从聊天到调用工具:理解MCP在AI应用中的位置
java·人工智能
2501_9339232528 分钟前
Spring Bean作用域揭秘:单例、原型、请求与会话的区别
java·后端·spring·java-ee
学编程就要猛1 小时前
基于Spring AI 的智能聊天机器人
java·spring ai·chat robot
修炼室1 小时前
Java开发工程师笔试经验贴【高频知识】
java
木井巳1 小时前
【记忆化搜索】最长递增子序列
java·算法·leetcode·深度优先·剪枝·推荐算法
杨杨杨大侠1 小时前
知识库已经有了,Java 程序员还要做什么?Spring AI RAG 实战
java·openai·ai编程
高级程序源1 小时前
django招聘网站信息爬取与分析系统79704-计算机课程设计、毕业设计
后端·python·mysql·小程序·django·flask·课程设计
伊信1 小时前
Spring AI 基础学习与应用
java·后端