Resource引发的报错

事出有因:

一个正常运行的项目再次运行的时候突然报错:

Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.

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).

//无法配置数据库,没有指定url属性,并且无法配置embedded datasource
//如果如果需要加载嵌入式的数据库,请将他放入路径中**//如果有数据库设置需要从指定配置文件中加载,需要调用该配置文件(目前没有活动的配置文件)*

这是一个很经典、也很入门的初级错误,说明你的配置文件中没有数据源相关的配置,在yml或properties中引入相关配置即可,但是,话说回来,我这是一个正常运行的项目突然报错说我没有相关配置,这不科学啊。

既然出现了这个问题,有三种可能:

  • 上文说的,没有配置数据源
  • 数据源配置错误,可检查配置文件语法格式(yml)
  • 配置文件在maven工程中属于Resource文件,那么最后一种可能就是IDEA没有识别Resource目录

我的解决方案:

首先清除IDEA的缓存,重新导入工程。

Resource右键工程,Mark Drectory as --> Resource Root

将Resource文件夹设置资源文件夹。

网上还有一种解决方案是:

Spring boot的启动引导类上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}),阻止Spring boot自动注入dataSource。我认为这种方案不可取。

原因:

该注解的作用是,排除自动注入数据源的配置(取消数据库配置),不去读取数据库,也就是无法操作数据库,这种选择在微服务中,可以作为消费者的配置,消费者去调用生产者的服务,生产者去与数据库交互。当然,在单体应用、或者是微服务的生产者中,必须使用数据库、就不能使用这种方案,所以该方案有一定的局限性,不可取。

在maven打包时遇到奇奇怪怪的报错,以上解决方案可用。

你可能感兴趣的:(SpringBoot学习,数据库,java,spring,mysql)