«Не удалось настроить источник данных: атрибут» url «не указан, и не удалось настроить встроенный источник данных». ошибка в приложении springboot

#java #postgresql #spring-boot #jdbc #apache-camel

Вопрос:

Я создал приложение springboot, которое использует Spring Boot и компонент JDBC Apache Camel для вставки записи в PostgreSQL. Для этой цели я использую следующие зависимости:

     <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <scope>runtime</scope>
            </dependency>
        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
        <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.9.0</version>
    </dependency>
        <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-jdbc</artifactId>
        <version>${camel.version}</version>
        <!-- use the same version as your Camel core version -->
    </dependency>

 

Что касается конфигурации базы данных, я создал следующий класс java с файлом application.properties:

Конфигурация базы данных Класс java:

 
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Properties;
    import org.apache.camel.support.SimpleRegistry;
    import org.apache.commons.dbcp2.BasicDataSource;
    
    
    public class DatabaseConfiguration {
        public static SimpleRegistry createDatabaseConfiguration() throws IOException {
            Properties properties = new Properties();
            properties.load(new FileInputStream("src/main/resources/application.properties"));
            BasicDataSource basic = new BasicDataSource();
            basic.setDriverClassName(properties.getProperty("PostgresDBClassname"));
            basic.setUsername(properties.getProperty("PostgresDBUsername"));
            basic.setPassword(properties.getProperty("PostgresDBPassword"));
            basic.setUrl(properties.getProperty("PostgresDBUrl"));
            SimpleRegistry registry = new SimpleRegistry();
            registry.bind("myDataSource", basic);
            return registry;
        }
    }

 

файл application.properties:

 PostgresDBUsername = username
PostgresDBPassword = password
PostgresDBClassname = org.postgresql.Driver
PostgresDBUrl = jdbc:postgresql://localhost:5432/postgres
 

Я написал маршрутизатор следующим образом, отметив, что пытался заменить источник данных на myDataSource:

    @Component
public class InsertRestService extends RouteBuilder {

  

    @Override
    public void configure() throws Exception {
        

        rest("/").produces("text/plain")
            .get("insert")
            .to("direct:hello");

        from("direct:hello")
            .transform().simple("INSERT INTO person (name, country) VALUES (DANY, LB)")
            .to("jdbc:dataSource") //spring boot starter jdbc creates the bean in the registry
            .transform().simple("Data inserted in Postgres successfully");
    }
}


 

Я получил следующую ошибку:

 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
 

Я указал URL-адрес в файле application.properties PostgresDBUrl

Также обратите внимание, что я скачал jar-файл драйвера jdbc и добавил его в путь к модулю, щелкнув правой кнопкой мыши на пакете, путь сборки, настройте путь сборкивведите описание изображения здесь, Так что я могу сделать, чтобы решить эту проблему? Спасибо!!

Комментарии:

1. Избавьтесь от своей конфигурации: это то, что делает для вас Boot. Просто установите spring.datasource.url и либо укажите имя пользователя/пароль с : / @ , либо также задайте свойства имени пользователя и пароля.

Ответ №1:

Я удалил файл конфигурации (конфигурация базы данных) и заменил содержимое файла application.properties на:

 spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.platform=postgres
spring.jpa.hibernate.ddl-auto=none
 

и это сработало!