Springboot项目启动报错 Failed to bind properties under 'spring.datasource.type' to java.lang.Class

问题描述:

Springboot项目在启动时,报出了以下错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'spring.datasource.type' to java.lang.Class<javax.sql.DataSource>:

    Property: spring.datasource.type
    Value: com.zaxxer.hikari.HikariDataSource
    Origin: "spring.datasource.type" from property source "bootstrapProperties"
    Reason: No converter found capable of converting from type [java.lang.String] to type [java.lang.Class<javax.sql.DataSource>]

Action:

Update your application's configuration

问题原因:

Springboot启动时,"DataSourceAutoConfiguration"类 发现DataSource类可用时,会自动配置DataSource。而我的项目模块中,配置文件(application.yml,bootstrap.yml)中并没有任何关于数据源的配置,从而引发了该错误。

解决方案一:

在启动文件中,增加排除数据源的配置,如下:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class,
    HibernateJpaAutoConfiguration.class})
public class RegistryCenterApp {
    ...
}

解决方案二:

方案一虽能解决问题,但是总感觉不够好。以前好好的服务,怎么就突然需要数据源了呢?

在看了代码提交后发现,该服务调用了common-service模块,而common-service模块中又新增了一个 spring-data-envers 的依赖,进而引入了数据源,而该模块却无需数据源,也就没有相应的配置,进而引发了错误。为啥会增加该依赖呢?询问后得知,需要引入 org.springframework.data.domain.Page 类,用来做jpa的分页,而这个类是在spring-data-commons 包中,后将common-service模块中的 spring-data-envers 依赖改为了 spring-data-commons 后,并将scope改为了provided后,再次编译启动,问题解决。

总结:

在多模块项目中,有时一个模块出错,并不一定是该模块的问题,还有可能是所依赖的其他模块出错,在出错分析时,也别忘分析是否是其他模块引发的错误。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值