配置多数据源时,application.yml 的有关mybatis的配置是失效的
时间: 2024-10-02 08:04:10 浏览: 37
Springboot为什么加载不上application.yml的配置文件
在Spring Boot应用中,当使用`application.yml`文件配置MyBatis的数据源时,如果直接将数据库连接信息写入这个配置,它可能会在有多个数据源的情况下失效。因为`application.yml`通常是在所有环境共享的配置文件中,而多数据源(例如使用`@ConfigurationProperties(prefix = "spring.datasource")`或`DataSourceTransactionManager`配合`Environment`)需要更细粒度的管理,每个数据源会有独立的配置。
对于多数据源场景,你应为每个数据源创建单独的配置,比如`application-dev.yml`、`application-test.yml`等,分别对应开发、测试等环境,并在对应的配置文件中指定相应的数据源属性。在这种情况下,`application.yml`中的MyBatis配置会被针对各个环境的具体配置所覆盖。
例如,在`application-dev.yml`中:
```yaml
spring:
datasource:
primary:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/dev_db
secondary:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://localhost:1433;databaseName=test_db
```
然后在你的MyBatis配置中,可以注入具体的DataSource实例,而不是依赖于全局的配置。
阅读全文