在用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