Riešenie chyby „Nepodarilo sa nakonfigurovať zdroj údajov“

1. Prehľad

V tejto krátkej príručke si povieme niečo čo spôsobuje a čo rieši Chyba „Nepodarilo sa nakonfigurovať zdroj údajov“ na projekte Spring Boot.

Problém vyriešime pomocou dvoch rôznych prístupov:

  1. Definovanie zdroja údajov
  2. Zakazuje sa automatická konfigurácia zdroja údajov

2. Problém

Predpokladajme, že máme projekt Spring Boot a pridali sme spring-data-starter-jpa závislosť a ovládač MySQL JDBC k nášmu pom.xml:

 org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java runtime 

Ale keď spustíme aplikáciu, zlyhá s chybou:

Popis: Nepodarilo sa nakonfigurovať zdroj údajov: atribút „url“ nie je zadaný a nemožno nakonfigurovať žiadny vložený zdroj údajov. Dôvod: Nepodarilo sa určiť vhodnú triedu vodiča

Pozrime sa, prečo sa to deje.

3. Príčina

Automatická konfigurácia Spring Boot sa zámerne pokúša nakonfigurovať fazuľa automaticky na základe závislostí pridaných do cesty triedy.

A keďže máme závislosť JPA na našej triede, Spring Boot sa pokúša automaticky nakonfigurovať JPA Dátový zdroj. Problém je, neposkytli sme Springu informácie potrebné na vykonanie automatickej konfigurácie.

Napríklad sme nedefinovali žiadne vlastnosti pripojenia JDBC a budeme to musieť robiť pri práci s externými databázami, ako sú MySQL a MSSQL. Na druhej strane nebudeme čeliť tomuto problému s databázami v pamäti, ako je H2, pretože môžu vytvárať zdroj údajov bez všetkých týchto informácií.

4. Riešenia

4.1. Definujte Dátový zdroj Používanie vlastností

Pretože sa problém vyskytuje v dôsledku chýbajúceho pripojenia k databáze, môžeme problém vyriešiť jednoducho poskytnutím vlastností zdroja údajov.

Najprv poďme definovať vlastnosti zdroja údajov v application.properties spis nášho projektu:

spring.datasource.url = jdbc: mysql: // localhost: 3306 / myDb spring.datasource.username = user1 spring.datasource.password = pass spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver

Alebo môžeme poskytovať vlastnosti zdroja údajov v aplikácia.yml:

jar: zdroj údajov: driverClassName: com.mysql.cj.jdbc.Adrl URL: jdbc: mysql: // localhost: 3306 / myDb username: user1 password: pass

4.2. Definujte Dátový zdroj Programovo

Alternatívne môžeme náš zdroj údajov definovať programovo pomocou pomocou triedy nástrojov na vytváranie nástrojov DataSourceBuilder. Na vytvorenie nášho zdroja údajov musíme poskytnúť adresu URL databázy, používateľské meno, heslo a informácie o ovládači SQL:

@Configuration verejná trieda DatasourceConfig {@Bean public DataSource datasource () {return DataSourceBuilder.create () .driverClassName ("com.mysql.cj.jdbc.Driver") .url ("jdbc: mysql: // localhost: 3306 / myDb ") .username (" user1 ") .password (" pass ") .build (); }}

Stručne povedané, môžeme sa rozhodnúť použiť ktorúkoľvek z vyššie uvedených možností na konfiguráciu zdroja údajov podľa našich požiadaviek.

4.3. Vylúčiť DataSourceAutoConfiguration

V predchádzajúcej časti sme problém vyriešili pridaním vlastností zdroja údajov do nášho projektu. Ako to však vyriešiť, ak ešte nie sme pripravení definovať zdroj údajov?

Pozrime sa, ako na to zabrániť Spring Boot v automatickej konfigurácii zdroja údajov.

Trieda DataSourceAutoConfiguration je základná trieda pre konfiguráciu zdroja údajov pomocou spring.datasource. * vlastnosti.

Teraz existuje niekoľko spôsobov, ako to môžeme vylúčiť z automatickej konfigurácie.

Najprv môžeme zakázať automatickú konfiguráciu pomocou pružina.autokonfigurácia.vylúčiťnehnuteľnosť v našom application.properties spis:

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

Rovnako môžeme urobiť to isté pomocou nášho aplikácia.yml spis:

jar: automatická konfigurácia: vylúčiť: - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

Alebo môžeme Použi vylúčiť atribút na našom @SpringBootApplication alebo @EnableAutoConfiguration anotácia:

@SpringBootApplication (vylúčiť = {DataSourceAutoConfiguration.class})

Vo všetkých vyššie uvedených príkladoch sme zakázal automatickú konfiguráciu súboru Dátový zdroj. To neovplyvní automatickú konfiguráciu akýchkoľvek ďalších fazúľ.

Ak to teda zhrnieme, môžeme použiť ktorúkoľvek z vyššie uvedených metód na zakázanie automatickej konfigurácie zdroja údajov Spring Boot.

V ideálnom prípade by sme mali poskytnúť informácie o zdroji údajov a možnosť vylúčenia použiť iba na testovanie.

5. Záver

V tomto článku sme videli, čo spôsobuje „Nepodarilo sa nakonfigurovať zdroj údajov“ chyba. Najskôr sme problém vyriešili definovaním zdroja údajov. Ďalej sme diskutovali o tom, ako problém vyriešiť bez toho, aby sme vôbec nakonfigurovali zdroj údajov.

Úplný kód použitý v tomto článku je ako vždy k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found