Failed to configure a DataSource

在用spring cloud的时候,先建立了一个parent项目,而后分别加入eureka-server模块、短信模块,运行正常。最后再加入支付模块(需整合jpa(或者myBatis)、mySql)以后,eureka-server模块和短信模块报错:spring

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

经查是由于引入了jpa的包ide

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

spring boot 会默认加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration这个类,而DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean,又由于项目(eureka-server模块和短信模块)中并无关于dataSource相关的配置信息,因此当spring建立dataSource bean时因缺乏相关的信息就会报错。spring-boot

解决办法:ui

一、在@SpringBootApplication注解上加上exclude,解除自动加载DataSourceAutoConfiguration。url

@EnableEurekaServer@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)public class EurekaServerApplication { 	public static void main(String[] args) {		SpringApplication.run(EurekaServerApplication.class, args);	}}

二、在parent项目的pom.xml文件中保存全部子模块的共有jar依赖,非共有的依赖则在各模块自身的pom.xml文件中进行申明。建议采用此方法,好处在于各模块的依赖不会相互产生干扰。spa

相关文章
相关标签/搜索