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
})
相关推荐
rebibabo12 小时前
Java基础(番外) | Kafka 入门:分区、副本与消费者组原理
java·分布式·kafka·学习笔记·副本·分区·异步日志
Flittly12 小时前
【AgentScope Java新手村系列】(17)长期记忆系统
java·spring boot·spring
fliter12 小时前
Futures Nostalgia:从 hyper 老派写法看懂 async Rust、Tower 与 Backpressure
后端
wei19862112 小时前
.net添加web引用和添加服务引用有什么区别?
java·前端·.net
Full Stack Developme13 小时前
正则表达式的使用教程
java·数据库·正则表达式
SeeYa-J13 小时前
Sprint 1-2:创建第一个 Spring Boot Module(user-service)
java·spring boot·sprint
苏三说技术14 小时前
推荐一个牛逼的RAG+KAG双引擎AI项目
后端
云絮.14 小时前
数据库事务
java·开发语言·数据库