首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在springboot中使用tomcat池化数据源时,我没有得到类型为'javax.sql.DataSource‘的合格bean。

在springboot中使用tomcat池化数据源时,我没有得到类型为'javax.sql.DataSource‘的合格bean。
EN

Stack Overflow用户
提问于 2017-07-27 09:10:18
回答 2查看 1.1K关注 0票数 0

我试图通过在application.yml文件中指定如下属性来使用带有spring boot的池化tomcat数据源:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  data:
    jpa:
      repositories:
        enabled: true
  datasource:
    tomcat:
      max-active: 50
      max-wait: 10000
      username: postgres
      password: root
      url: jdbc:postgresql://localhost:5432/proj
      driver-class-name: org.postgresql.Driver

我得到了

Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).

我不明白为什么springboot要创建一个嵌入式数据源。这是池化数据源的预期行为吗?

我在一些论坛上看到spring-jdbc依赖会导致这个问题,所以我排除了所有spring-jdbc依赖。不,我明白

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
        at org.springframework.beans.factory
.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)

POM文件

">http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<groupId>com.yyyy.xxxx</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>xxxx</name>
<description>xxxx project</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <jsoup.version>1.10.3</jsoup.version>
    <log4j.version>1.2.17</log4j.version>
</properties>

<organization>
    <name>SA Technologies</name>
    <url>www.satechnologies.com</url>
</organization>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-hateoas</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.6</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>${jsoup.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.5.4-Final</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version><!--$NO-MVN-MAN-VER$ -->
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.196</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.8.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jdbc</artifactId>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>de.jpdigital</groupId>
            <artifactId>hibernate5-ddl-maven-plugin</artifactId>
            <version>1.0.1-hibernate-5.1.2.Final</version>
            <configuration>
                <dialects>
                    <param>POSTGRESQL9</param>
                    <param>SQLSERVER2012</param>
                </dialects>
                <packages>
                    <param>com.yyyy.xxxx.model</param>
                </packages>
                <outputDirectory>${project.basedir}/docs/sql</outputDirectory>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>gen-ddl</goal>
                    </goals>
                    <phase>process-classes</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@EnableJpaRepositories(basePackages = { "com.yyyy.xxxx.persistence.repositories" })
@EnableTransactionManagement
@EntityScan(basePackages = { "com.yyyy.xxxx.persistence.model" })
@Configuration
public class PersistenceConfig {

}

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggingInterceptor());
    }
}

@SpringBootApplication(scanBasePackages = { "com.yyyy.xxxx" })
public class XxxxApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(XxxxApplication.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(XxxxApplication.class, args);
    }
}

有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-10 08:57:09

所以正确的设置是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  profiles.active: local
  data:
    jpa:
      repositories:
        enabled: true

  datasource:
    type: org.apache.tomcat.jdbc.pool.DataSource
    username: postgres
    password: root
    url: jdbc:postgresql://localhost:5433/proj
    driver-class-name: org.postgresql.Driver
    platform: org.hibernate.dialect.PostgreSQLDialect
    tomcat:
      max-active: 200
      max-age: 1000
      max-wait: 10000
      removeAbandonedTimeout: 30
      initial-size: 20
      validation-query: SELECT 1
  jpa:
    database: postgresql
    generate-ddl: true
    show-sql: true
    hibernate:
      ddl-auto: none
    database-platform: org.hibernate.dialect.PostgreSQLDialect
票数 0
EN

Stack Overflow用户

发布于 2017-07-27 14:59:07

这4个属性位于数据源下,而不是tomcat。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  username: postgres
  password: root
  url: jdbc:postgresql://localhost:5432/proj
  driver-class-name: org.postgresql.Driver

请在https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java此处查看DataSourceProperties

进一步参考:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-use-yaml-for-external-properties

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45346236

复制
相关文章
使用dbcp作为数据池的坑
 使用sqlyog或者是navicat 执行操作。等一会不操作,下次操作第一次就会比较卡。需要等待,才可以。连接上,继续操作没问题。但是一会不操作,下次操作,又会复现。
凯哥Java
2019/06/30
2.8K0
06.深入浅出 Spring Boot - 数据访问之Druid(附代码下载)
1、Druid是数据库连接池,功能、性能、扩展性方面都算不错。最大的亮点是为监控而生的数据库连接池。
悟空聊架构
2020/03/05
1.1K0
06.深入浅出 Spring Boot - 数据访问之Druid(附代码下载)
Spring Boot(3)-使用mysql详解
Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍,包括JDBC、JPA、MyBatis、多数据源和事务。
黄规速
2022/04/14
4.1K0
Spring Boot(3)-使用mysql详解
springboot设置bean为默认主要bean
当springboot有多个不能名称但是相同bean的时候,可以使用 @Primary 注解设置其中一个为主要默认bean
用户9131103
2023/07/17
4370
springboot2.0配置多数据源出错HikariPool-1 - jdbcUrl is required with driverClassName.
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
3.3K0
Java之SpringBoot自定义配置与整合Druid
这篇文章主要介绍的是java之SpringBoot自定义配置与整合Druid的相关资料,关于SpringBoot配置文件可以是properties或者是yaml格式的文件,但是在SpringBoot加载application配置文件时是存在一个优先级,下面小编就和大家一起进入文章学习这项
米米素材网
2022/07/30
9120
Java之SpringBoot自定义配置与整合Druid
HikariPool-1 – dataSource or dataSourceClassName or jdbcUrl is required.解决方案[通俗易懂]
最近在使用Spring Boot 2.x with H2 Database 以及JPA整合一个项目的时候出现了下面这一个故障:
全栈程序员站长
2022/09/10
4.2K0
从SpringBoot启动,阅读源码设计
初学SpringBoot框架时,第一次启动服务,直呼什么鬼?只需要简单的几步配置,几个核心的注解,就可以快速实现工程的搭建和运行;
知了一笑
2022/11/30
3520
从SpringBoot启动,阅读源码设计
SpringBoot | SpringBoot整合数据库
可以看到:默认数据源为 class com.zaxxer.hikari.HikariDataSource
啵啵鱼
2022/11/23
8530
SpringBoot | SpringBoot整合数据库
Tomcat在SpringBoot中是如何启动的?
我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序打成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计。
挨踢小子部落阁
2019/10/14
1.5K0
Tomcat在SpringBoot中是如何启动的?
Tomcat在SpringBoot中是如何启动的
我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序达成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计。
macrozheng
2019/09/27
1.6K0
SpringBoot+Druid+Mybatis配置多数据源
我们在开发一个项目的时候,可能会遇到需要对多个数据库进行读写的需求,这时候就得在项目中配置多个数据源了。在Java项目的开发中,目前最常用的数据操作框架是 Mybatis,开发框架也都基本用上了SpringBoot。而Druid号称最好的数据库连接池,自然也是被广泛使用。
端碗吹水
2020/09/24
7.3K0
数据库连接池-tomcat-jdbc食用笔记
现在 主流的数据库连接池有:Proxool、C3P0、DBCP、tomcat-jdbc、Druid。其中tomcat-jdbc是tomcat服务器比较可靠的 数据库连接池。 Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是DBCP存在一些问题:     DBCP 是单线程的,为了保证线程安全会锁整个连接池     DBCP 性能不佳     DBCP 太复杂,超过60个类,发展滞后。     因此,通常J2EE中还会使用其它的高性能连接池,如C3P0,还有阿里系
斯武丶风晴
2018/03/01
3.6K0
数据库连接池-tomcat-jdbc食用笔记
Tomcat在SpringBoot中是如何启动的?
我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序打成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计。
Bug开发工程师
2019/10/11
1.3K0
Tomcat在SpringBoot中是如何启动的?
sprongboot配置druid数据源使用druid监控
首先它是一个数据库连接池,负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
废江_小江
2022/09/05
9120
Tomcat-9.JNDI资源
Tomcat为每个在其上运行的web应用提供了一个JNDI的** InitialContext**实现实例,它与Java EE应用服务器提供的对应类完全兼容。 Java EE标准在/WEB-INF/web.xml文件中提供了一系列标准元素,用来引用或者定义资源。
悠扬前奏
2019/05/28
1.2K0
在Springboot中使用ThreadPoolExecutor线程池
在springboot项目中如果需要用到ThreadPoolExecutor线程池的话是非常方便的。比使用java并发包中的Executors都还方便很多。 实际上spring中的线程池ThreadpoolExecutor只是对java并发包中的线程池的封装。这样便于在spring环境中快速使用。通过几个注解即可,降低了对代码的侵入性。
冬天里的懒猫
2021/09/26
3.8K0
一文读懂SpringBoot持久层开发原理
SpingBoot持久层开发原理 1. JDBC “SpringBoot关于数据库的配置都存在于org.springframework.boot.autoconfigure.jdbc 关于数据库的相关配置存放于DataSourceProperties中 @ConfigurationProperties( prefix = "spring.datasource" ) public class DataSourceProperties implements BeanClassLoaderAware, I
石的三次方
2021/01/05
9580
SpringBoot中Configure注解和Bean注解的使用
  Configure不加参数,仅声明为配置类,加了参数代表该类为实例,实例名称为参数名
用户2603479
2018/08/15
1.9K0
整合Druid—SpringBoot[通俗易懂]
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。
全栈程序员站长
2022/09/15
1.2K0

相似问题

没有“javax.sql.DataSource”类型的合格bean可用

10

没有定义[javax.sql.DataSource]类型的合格bean

20

Springboot没有[javax.sql.DataSource]类型的限定bean

61

JUnit/Spring/Hibernate -没有类型的合格bean [javax.sql.DataSource]

10

在SpringBoot应用程序中没有可用类型的合格bean

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文