A „Nem sikerült konfigurálni az adatforrást” hiba elhárítása
1. Áttekintés
Ebben a rövid bemutatóban megvitatjuk mi okozza és mi oldja meg a “Nem sikerült konfigurálni a DataSource-t” hiba egy tavaszi bakancs projekten.
Két különböző megközelítéssel oldjuk meg a problémát:
- Az adatforrás meghatározása
- Az adatforrás automatikus konfigurálásának letiltása
2. A probléma
Tegyük fel, hogy van egy Spring Boot projektünk, és hozzáadtuk a spring-data-starter-jpa függőség és egy MySQL JDBC illesztőprogram a mi pom.xml:
org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java futásidejű
De amikor az alkalmazást futtatjuk, a hiba nem sikerül:
Leírás: Nem sikerült konfigurálni a DataSource-t: az 'url' attribútum nincs megadva, és nem lehet beágyazott adatforrást konfigurálni. Ok: Nem sikerült meghatározni a megfelelő vezetőosztályt
Lássuk, miért történik ez.
3. Az ok
Tervezés szerint a Spring Boot automatikus konfigurációja megpróbálja a babokat automatikusan konfigurálni az osztályútvonalhoz adott függőségek alapján.
És mivel a JPA függ az osztályúttól, a Spring Boot megpróbálja automatikusan konfigurálni a JPA-t Adatforrás. Az a baj, nem adtuk meg Springnek az automatikus konfiguráláshoz szükséges információkat.
Például nem definiáltunk JDBC kapcsolat tulajdonságokat, és ezt meg kell tennünk, amikor olyan külső adatbázisokkal dolgozunk, mint a MySQL és az MSSQL. Másrészt nem fogunk szembenézni ezzel a problémával a memóriában lévő olyan adatbázisoknál, mint a H2, mivel ezek az adatok nélkül képesek létrehozni egy adatforrást.
4. Megoldások
4.1. Határozza meg a Adatforrás A Tulajdonságok használata
Mivel a probléma a hiányzó adatbázis-kapcsolat miatt jelentkezik, egyszerűen megoldhatjuk a problémát az adatforrás tulajdonságainak megadásával.
Először is meghatározza az adatforrás tulajdonságait a alkalmazás.tulajdonságok fájl projektünk:
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
Vagy, megtehetjük adja meg az adatforrás tulajdonságait alkalmazás.yml:
tavasz: adatforrás: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc: mysql: // localhost: 3306 / myDb felhasználónév: user1 jelszó: pass
4.2. Határozza meg a Adatforrás Programozatosan
Alternatív megoldásként meghatározhatjuk adatforrásunkat programozottan, a a közműépítő osztály használatával DataSourceBuilder. Adatforrásunk létrehozásához meg kell adnunk az adatbázis URL-jét, felhasználónevét, jelszavát és az SQL illesztőprogram adatait:
@Configuration public class 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 (); }}
Röviden, választhatjuk, hogy a fenti lehetőségek bármelyikét felhasználjuk az adatforrás konfigurálásához a követelményeinknek megfelelően.
4.3. Kizárás DataSourceAutoConfiguration
Az előző szakaszban úgy javítottuk ki a problémát, hogy hozzáadtuk az adatforrás tulajdonságait a projektünkhöz. De hogyan oldjuk meg ezt, ha még nem vagyunk készek meghatározni az adatforrásunkat?
Lássuk, hogyan kell megakadályozza, hogy a Spring Boot automatikusan konfigurálja az adatforrást.
Osztály DataSourceAutoConfiguration az alaposztály az adatforrás konfigurálásához a tavasz.adatforrás. * tulajdonságait.
Néhány módon kizárhatjuk ezt az automatikus konfigurációból.
Először is tiltsa le az automatikus konfigurációt a tavasz.autokonfigurálás.kizáringatlan miénkben alkalmazás.tulajdonságok fájl:
spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
Ugyanígy megtehetjük ugyanezt a sajátunk használatával is alkalmazás.yml fájl:
tavasz: autoconfigure: kizárás: - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
Vagy, megtehetjük használja a kizárni attribútum a mi @SpringBootApplication vagy @EnableAutoConfiguration annotáció:
@SpringBootApplication (kizárva = {DataSourceAutoConfiguration.class})
Az összes fenti példában mi letiltotta a. automatikus konfigurálását Adatforrás. És ez nem befolyásolja más babok automatikus konfigurálását.
Összefoglalva tehát a fenti módszerek bármelyikével letilthatjuk a Spring Boot automatikus adatkonfigurációját.
Ideális esetben meg kell adnunk az adatforrás adatait, és a kizárás opciót csak tesztelésre kell használnunk.
5. Következtetés
Ebben a cikkben megnéztük, mi okozza a „Nem sikerült konfigurálni egy adatforrást” hiba. Először az adatforrás meghatározásával javítottuk ki a problémát. Ezután megvitattuk, hogyan lehet megoldani a problémát az adatforrás konfigurálása nélkül.
Mint mindig, a cikkben használt teljes kód elérhető a GitHubon.