springboot代码没错但是报错(SpringBoot启动报错Failedtoconfigure)
springboot代码没错但是报错(SpringBoot启动报错Failedtoconfigure)//错误示例spring: datasource: url: jdbc:mysql://localhost:3306/data?serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root password: root driver-class-name: com.mysql.jdbc.Driver 方案3、配置信息转义@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) public class Application { public static void main(String[] args) { SpringApplication.run(Application args); } } 方案2、配置文件添
错误日志*************************** 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 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). Process finished with exit code 1
根据报错日志分析是在springboot项目启动的时候没有找到database 数据库连接地址,我们知道在spring boot 启动的时候会默认加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration这个类,而DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean,又因为项目中并没有关于dataSource相关的配置信息,所以当spring创建dataSource bean时因缺少相关的信息就会报错。
- 检查pom.xml 项目数据库jar 是否引用;
- 查看.properties或.yml 配置文件是否配置数据库链接池;
- 查看spring - datasource - url 配置的地址格式错误需要转义等;
- yml或者properties文件可能没有被扫描到(情况比较少,如果按照标准命名都会被默认扫描);
方案1、如果项目不需要数据库相关信息就排除此类的autoconfig
在@SpringBootApplication注解上加上exclude,解除自动加载DataSourceAutoConfiguration。
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
springboot启动类加上这个启动以后就可以正常运行。完整代码:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) public class Application { public static void main(String[] args) { SpringApplication.run(Application args); } }
方案2、配置文件添加数据库链接信息
**. properties 文件添加数据库配置信息(以mysql为例):
druid.driver=com.mysql.jdbc.Driver druid.url=jdbc:mysql://localhost:3306/data?serverTimezone=Asia/Shanghai&allowMultiQueries=true druid.username= root druid.password= root
**.yml文件添加数据库配置信息(已mysql为例):
spring: datasource: url: jdbc:mysql://localhost:3306/data?serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root password: root driver-class-name: com.mysql.jdbc.Driver
方案3、配置信息转义
//错误示例
druid.url= jdbc:mysql\://localhost\: 3306/data?serverTimezone=Asia/Shanghai&allowMultiQueries=true
//正确示例
druid.url= jdbc:mysql://localhost: 3306/data?serverTimezone=Asia/Shanghai&allowMultiQueries=true
方案4、配置pom.xml 中yml或者properties扫描
需要在pom文件中<build></build中添加如下.来保证文件都能正常被扫描到并且加载成功.
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.yml</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.yml</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources>