一、该问题的重现步骤是什么?
1. 在pom.xml添加dynamic-datasource-spring-boot-starter
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> </dependency>
2. application-dev.yml配置数据源信息
#数据源配置
spring: datasource: dynamic: enabled: true primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源. datasource: master: url: jdbc:mysql://localhost:3306/bladex?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver #tadb: #url: jdbc:oracle:thin:@127.0.0.1:1521:orcl #username: xxx #password: xxx #driver-class-name: oracle.jdbc.OracleDriver
二、你期待的结果是什么?实际看到的又是什么?
可通过dynamic-datasource动态切换数据源,按照dynamic-datasource进行配置报错
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
BladeX、BladeX-Tool V2.7.0 windows 2016
四、请提供详细的错误堆栈信息,这很重要。
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-01-11 17:04:47.704 ERROR 1836 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine suitable jdbc url Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (the profiles dev are currently active).
五、若有更多详细信息,请在下面提供。
-
在LauncherServiceImpl内增加如下配置
PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true");
讨论(1)
-
已解决。
原来在后台代码给了默认值为false,我以为在配置文件设置就可以了。原因是配置文件中设置后,在后台又赋予了默认值为flase,其实可以先判断配置文件中配置值为空,如果为空,则默认为false
spring:
datasource:
dynamic:
enabled: true
讨论(0)