Spring Boot JPA 找不到数据源

Posted

技术标签:

【中文标题】Spring Boot JPA 找不到数据源【英文标题】:Spring Boot JPA not finding data source 【发布时间】:2017-11-05 23:53:45 【问题描述】:

我有一个 Spring Boot 应用程序,配置如下:

应用

@SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class,
        DataSourceAutoConfiguration.class,JpaRepositoriesAutoConfiguration.class)
public class Application extends SpringBootServletInitializer 

主要配置类:

@Configuration
@ComponentScan("com.mycompany.it")
@Import(DatabaseConfiguration.class)
public class Configuration extends WebMvcConfigurationSupport 

数据库配置:

@Configuration
@ComponentScan(basePackages = "com.mycompany.it.xp2.integration.workday.dao","com.mycompany.it.xp2.integration.workday.application","com.company.it.xp2.integration.workday.model")
@EnableAspectJAutoProxy
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.company.it.xp2.integration.workday.dao","com.company.it.xp2.integration.workday.model")
public class DatabaseConfiguration 

使用 DataSource bean 声明:

@Bean(destroyMethod = "close")
    @Primary
    public DataSource dataSource() throws PropertyVetoException 
        ComboPooledDataSource source = new ComboPooledDataSource();
        source.setDriverClass(driverClass);
        source.setJdbcUrl(jdbcUrl);
        source.setUser(jdbcUsername);
        source.setPassword(jdbcPassword);
        source.setInitialPoolSize(initialSize);
        source.setMaxPoolSize(maxActive);
        source.setMinPoolSize(minIdle);
        return source;
    

但是,当我启动应用程序时,我收到以下错误:

原因: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建具有名称的 bean 时出错 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': 通过构造函数参数 0 表示的不满足的依赖关系; 嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 “javax.sql.DataSource”类型的合格 bean 可用:预计在 至少 1 个符合自动装配候选资格的 bean。依赖 注释:

以下是 gradle 中的相关行:

compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop'
compile group: 'org.springframework', name: 'spring-orm'

compile group: "org.springframework.boot", name: "spring-boot-starter-jdbc"
compile "org.springframework.boot:spring-boot-starter-data-jpa"

Spring Boot 1.5.3 版

【问题讨论】:

能否请您发布项目的依赖项并添加数据库连接器依赖项 为什么要从spring自动加载器中排除DataSourceAutoConfiguration.class? 我们有一个不检查源代码密码的策略,而且由于多个项目共享同一个tomcat实例,我们不能只在tomcat环境设置中使用spring.jdbc.password属性 【参考方案1】:

检查错误日志

1 个符合自动装配候选资格的 bean。依赖注解

好像你配置bean的时候出错了。

【讨论】:

以上是关于Spring Boot JPA 找不到数据源的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot JPA 中找不到实体列名称

Spring Boot Jpa 1.4.0 - 找不到能够从类型 [java.util.HashMap<?, ?>] 转换为 Pojo 类型的转换器

Spring Boot JPA 错误:无法处理托管/反向引用“defaultReference”:从类型中找不到反向引用属性

Spring Boot Kotlin 找不到存储库 Bean

带有 H2 和 data.sql 的 Spring Boot Data JPA - 未找到表

Spring Boot,JPA和Ignite