Spring boot + hikari - dataSource or dataSourceClassName or jdbcUrl is required issue

16,138

Change jdbc-url to jdbcUrl so Hikari can find suitable driver per url.

jdbcUrl This property directs HikariCP to use "DriverManager-based" configuration. We feel that DataSource-based configuration (above) is superior for a variety of reasons (see below), but for many deployments there is little significant difference. When using this property with "old" drivers, you may also need to set the driverClassName property, but try it first without. Note that if this property is used, you may still use DataSource properties to configure your driver and is in fact recommended over driver parameters specified in the URL itself. Default: none

Share:
16,138
user2761431
Author by

user2761431

Updated on June 13, 2022

Comments

  • user2761431
    user2761431 almost 2 years

    I get the following error trying to start my Spring application

    ERROR 5908 --- [ main] com.zaxxer.hikari.HikariConfig : HikariPool-1 - dataSource or dataSourceClassName or jdbcUrl is required.

    My application.properties file looks like this:

    spring.datasource.one.jdbc-url = jdbc:postgresql://10.x.x.x:y/sampledb1
    spring.datasource.one.username = someuser
    spring.datasource.one.password = somepasswd
    spring.datasource.one.driver-class-name = org.postgresql.Driver
    
    spring.datasource.two.jdbc-url = jdbc:postgresql://10.x.x.x:z/sampledb2
    spring.datasource.two.username = someuser
    spring.datasource.two.password = somepassword
    spring.datasource.two.driver-class-name = org.postgresql.Driver
    

    And I am using DataSourceBuilder class as below:

    @Configuration
    public class DataSourceConfig
    {
        @Bean(name = "one")
        @Primary
        @ConfigurationProperties(prefix = "spring.datasource.one") 
        public DataSource dataSource1()
        {
            return DataSourceBuilder.create().build();
        }
    
        @Bean(name = "two")
        @ConfigurationProperties(prefix = "spring.datasource.two") 
        public DataSource dataSource2()
        {
            return DataSourceBuilder.create().build();
        }
    }
    

    My pom looks like this.

        <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <avro.version>1.8.2</avro.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <version.powermock>1.6.2</version.powermock>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- actuator -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- hystrix -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
         </dependencies> 
    

    This was working fine earlier, but now causing some issues. And the error occurs intermittently, sometime it starts without error, other times it fails with the error.

    I tried solutions suggested in the link .They don't seem to work for me.