问题(Spring|问题:Spring boot 启动报错 Failed to auto-configure a DataSource)

今天完了一下mybatis的通用mapper,但是启动后报错。

*************************** APPLICATION FAILED TO START *************************** Description: Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured. Reason: Failed to determine a suitable driver class 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 (no profiles are currently active).

遂百度之,
参考https://blog.csdn.net/daxiang52/article/details/79420777
原理大概是,在pom中添加了数据库相关的依赖,当时没有配置数据源,所以启动的时候初始化数据源失败了,导致启动失败。
但是我的配置是没有问题的,application.yml中数据源神马的都配置好的。
后来我打开看了一下target文件夹,居然打包的时候maven没把application.yml拷贝过去。wtf,想了一下,是这段配置除了问题:
src/main/java **/*.xml src/main/resources **/*.xml **/*.properties

【问题(Spring|问题:Spring boot 启动报错 Failed to auto-configure a DataSource)】因为我直接把mapper.xml文件放在mapper接口的包里,然后些人maven的资源拷贝的。但是天杀的没有写.yml格式的,导致打包后没有appliation.yml,所以问题也就明了了。
所以出现这个问题有两种情况
1.添加了数据库相关组件,但是没有配置数据源,spring-boo启动时候自动配置失败。 解决办法:
需要在启动类的@EnableAutoConfiguration或@SpringBootApplication中添加exclude= {DataSourceAutoConfiguration.class},排除此类的autoconfig。启动以后就可以正常运行。
这是因为添加了数据库组件,所以autoconfig会去读取数据源配置,而我新建的项目还没有配置数据源,所以会导致异常出现。
2.资源拷贝的问题,检查一下打包后的target文件就可以看出来。 解决办法:
配置一下在文件maven打包的时候吧拷贝进去,如果出现application.yml存在但是读取有问题,多半是application.yml编码格式的问题,utf-8解决。

    推荐阅读