Saya hanya mencoba untuk melihat konten database H2 untuk database H2 tertanam yang dibuat oleh spring-boot ketika saya tidak menentukan apa pun di application.properties saya dan mulai dengan mvn spring: run. Saya dapat melihat JPA hibernasi membuat tabel tetapi jika saya mencoba mengakses konsol h2 di URL di bawah database tidak memiliki tabel.
http://localhost:8080/console/
Saya melihat saran seperti ini: Lihat konten database H2 tertanam yang dimulai oleh Spring
Tapi saya tidak tahu di mana harus meletakkan XML yang disarankan di musim semi-boot dan bahkan jika saya melakukannya, saya tidak ingin h2console tersedia lagi ketika database eksternal dikonfigurasi sehingga kemungkinan besar saya perlu menangani ini dengan beberapa jenis kode bersyarat (atau mungkin hanya mengizinkan pegas untuk secara otomatis menanganinya dalam kasus yang paling ideal di mana saya hanya menyertakan H2 ketika profil maven diaktifkan).
Apakah ada yang punya beberapa contoh kode yang menunjukkan bagaimana untuk mendapatkan konsol H2 bekerja di boot (dan juga cara untuk mengetahui apa yang menggunakan string koneksi jdbc musim semi)?
Jawaban:
Ini adalah bagaimana saya membuat konsol H2 bekerja di boot musim semi dengan H2. Saya tidak yakin apakah ini benar tetapi karena tidak ada orang lain yang menawarkan solusi maka saya akan menyarankan ini adalah cara terbaik untuk melakukannya.
Dalam kasus saya, saya memilih nama spesifik untuk database sehingga saya memiliki sesuatu untuk dimasukkan saat memulai konsol H2 (dalam hal ini, "AZ"). Saya pikir semua ini diperlukan meskipun sepertinya meninggalkan platform spring.jpa.database tidak merugikan apa pun.
Dalam application.properties:
Di Application.java (atau beberapa konfigurasi):
Kemudian Anda dapat mengakses konsol H2 di {server} / console /. Masukkan ini sebagai URL JDBC: jdbc: h2: mem: AZ
sumber
new WebServlet()
beri saya masalah. Kelas mana yang diimpor ini untuk Anda? Ini menarik javax.servlet.annotation.WebServlet bagi saya sebagai satu-satunya pilihan dan itu hanya sebuah antarmuka.jdbc:h2:mem:testdb
dengan nama pengguna kosong dan kata sandi kosong. localhost: 8082 bekerja dengan pengaturan ini.Sejak Spring Boot
1.3.0.M3
, konsol H2 dapat dikonfigurasi secara otomatis.Prasyaratnya adalah:
Meskipun Anda tidak menggunakan Spring Boot Dev Tools, Anda masih dapat mengkonfigurasi konsol secara otomatis dengan mengatur
spring.h2.console.enabled
ketrue
Periksa ini bagian dari dokumentasi untuk semua rincian.
Perhatikan bahwa ketika mengonfigurasi dengan cara ini, konsol dapat diakses di: http: // localhost: 8080 / h2-console /
sumber
spring-boot-starter-web
sebagai dependensijdbc:h2:mem:testdb
ini untuk URL koneksi, bukan untuk URL yang konsolnya dapat diaksesSaya telah menemukan tutorial bagus tentang topik ini:
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
Pada dasarnya, URL JDBC yang benar untuk saya adalah:
jdbc:h2:mem:testdb
sumber
Dari http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
H2 Web Console (H2ConsoleProperties):
Menambahkan dua baris di atas ke file application.properties saya sudah cukup untuk mengakses konsol web database H2, menggunakan nama pengguna default (sa) dan kata sandi (kosong, seperti di jangan masukkan kata sandi ketika ui meminta Anda).
sumber
spring.h2.console.enabled=true
? False akan menonaktifkannya. Danspring.h2.console.path=/h2-console
mubazir karena/h2-console
merupakan jalur default dari Spring Boot. Sesuai dokumentasi "Secara default, konsol akan tersedia di / h2-console. Anda dapat menyesuaikan jalur konsol menggunakan properti spring.h2.console.path." Detail selengkapnya di sini docs.spring.io/spring-boot/docs/current/reference/html/…Jawaban serupa dengan panduan Langkah demi Langkah.
pom.xml
ataubuild.gradle
Maven
Gradle
http://localhost:8080/h2-console/
jdbc:h2:mem:testdb
sebagai URL JDBCsumber
Saya hanya memiliki properti di bawah ini di /resources/application.properties. Setelah menjalankan boot musim semi, menggunakan URL ini ( http: // localhost: 8080 / h2-console / ), tabel di konsol H2 terlihat dan dibaca untuk melihat data tabel, Anda juga dapat menjalankan perintah SQL sederhana. Satu hal, dalam kode java Anda, saat mengambil data, nama kolom menggunakan huruf besar, meskipun schema.sql menggunakan nama huruf kecil :)
sumber
Untuk Spring Boot 2.1.1 langsung dari Spring Initialzr:
Default dengan devtools adalah http://127.0.0.1:8080/h2-console/
Tanpa alat pengembang - Anda perlu menyetelnya di properti:
spring.h2.console.enabled=true spring.h2.console.path=/h2-console
Setelah Anda sampai di sana - setel URL JDBC: jdbc: h2: mem: testdb (yang default tidak akan berfungsi)
sumber
Jika Anda menggunakan alat pengembang Spring Boot, itu datang dengan H2 Console diaktifkan secara default. Ini dapat diakses dari
/h2-console
/. Pada antarmuka login, untukJDBC URL
nilai pakai inputjdbc:h2:mem:testdb
. Perhatikanmem
senar.Jika Anda tidak menggunakan alat pengembang Spring Boot, Anda dapat mengaktifkan konsol dalam
application.properties
menggunakanspring.h2.console.enabled=true
. Ini akan mengaktifkan konsol di bawah/h2-console
. Jika Anda ingin mengubah URL, Anda dapat menambahkan entri lain denganspring.h2.console.path=my_console_path
.Nama skema default adalah
testdb
.Detail selengkapnya di Dokumentasi Spring Boot .
sumber
jdbc:h2:mem:testdb
url jdbc tidak disetel sebagai default? Saya menghabiskan banyak waktu untuk memikirkan di mana kesalahan entitas jpa sayaPeriksa properti aplikasi musim semi
di sini testdb adalah database yang ditentukan Pastikan konsol h2 memiliki nilai yang sama saat menghubungkan jika tidak maka akan terhubung ke db default
sumber
Untuk mendapatkan tabel yang perlu Anda lakukan adalah membuat 2 file sql schema.sql (untuk pembuatan tabel) dan data.sql (data untuk tabel yang dibuat). File-file ini akan ditempatkan di folder src / main / resources. Spring boot otomatis mendeteksi mereka dan menangani sisanya selama runtime.
Jika Anda menggunakan lebih dari 2 DB dalam proyek Anda, pastikan untuk menggunakan file tertentu seperti (schema-h2.sql - untuk h2 DB, schema-oracle.sql - untuk oracle DB). Hal yang sama juga harus diikuti untuk data.sql.
Juga pastikan bahwa Anda menghapus tabel dengan menambahkan pernyataan drop table di schema.sql Anda sebagai pernyataan pertama. Untuk menghindari penambahan catatan duplikat.
Tautan untuk sepatu bot musim semi ada di sini.
Application.properties saya adalah sebagai berikut.
Anda dapat mengikuti langkah-langkah di tautan di bawah ini.
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
sumber
Saya menemukan bahwa dengan boot musim semi 2.0.2.RELEASE, mengkonfigurasi spring-boot-starter-data-jpa dan com.h2database di file POM tidak hanya cukup untuk menjalankan konsol H2. Anda harus mengkonfigurasi spring-boot-devtools seperti di bawah ini. Opsional Anda bisa mengikuti instruksi dari Aaron Zeckoski di posting ini
sumber
Gunakan jdbc: h2: mem: testdb sebagai jalur Anda saat masuk ke konsol H2.
Jelas jika Anda telah mengubah properti Spring Boot, sumber data Anda mungkin berbeda, tetapi sepertinya Anda kesulitan menemukan defaultnya. Hanya itu yang ada untuk itu! Anda akan melihat skema Anda setelah masuk ke H2.
sumber
Saya telah membuat kesalahan yang sangat bodoh ketika saya mengalami masalah yang sama. Saya telah menambahkan H2 DB untuk menjalankan uji kasus unit dan karenanya saya telah menetapkan
scope
untuktest
dipom.xml
. Saat menjalankan aplikasi menggunakanmvn spring:run
saya menghapusscope
dan berfungsi dengan baik sekarang.sumber
Untuk Spring Boot 2.3.3. LEPASKAN langsung dari Spring Initialzr:
POM: data jpa, h2, web
properti aplikasi:
spring.h2.console.enabled=true
Ketika Anda menjalankan aplikasi, cari baris seperti di bawah ini di konsol run:
Sekarang gunakan URL JDBC di atas untuk h2-console dan klik
Connect
.sumber