Spring Boot standaard H2 jdbc-verbinding (en H2-console)

Ik probeer gewoon de inhoud van de H2-database te zien voor een ingebedde H2-database die spring-boot maakt als ik niets opgeef in mijn application.propertiesen begin met mvn spring:run. Ik kan zien dat JPA de tabellen in de slaapstand maakt, maar als ik probeer toegang te krijgen tot de h2-console via de URL hieronder, heeft de database geen tabellen.

http://localhost:8080/console/

Ik zie suggesties zoals deze:
Inhoud bekijken van ingesloten H2-database gestart door Spring

Maar ik weet niet waar ik de voorgestelde XML in spring-boot moet plaatsen en zelfs als ik dat wel zou doen, wil ik niet dat de h2consolemeer beschikbaar is wanneer een externe database zo is geconfigureerd het is waarschijnlijker dat ik dit moet afhandelen met een soort voorwaardelijke code (of misschien gewoon de lente toestaan ​​om het automatisch af te handelen in het meest ideale geval waarbij ik alleen H2 opneem wanneer een maven-profiel is geactiveerd).

Heeft iemand een voorbeeldcode die laat zien hoe de H2-console tijdens het opstarten werkt (en ook de manier om erachter te komen wat de jdbc-verbindingsreeks is die lente gebruikt)?


Antwoord 1, autoriteit 100%

Dit is hoe ik de H2-console heb laten werken in spring-boot met H2. Ik weet niet zeker of dit juist is, maar aangezien niemand anders een oplossing heeft aangeboden, ga ik voorstellen dat dit de beste manier is om het te doen.

In mijn geval heb ik een specifieke naam voor de database gekozen, zodat ik iets zou hebben om in te voeren bij het starten van de H2-console (in dit geval “AZ”). Ik denk dat dit allemaal nodig is, hoewel het lijkt alsof het weglaten van het spring.jpa.database-platform geen kwaad kan.

In application.properties:

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

In Application.java (of een andere configuratie):

@Bean
public ServletRegistrationBean h2servletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
    registration.addUrlMappings("/console/*");
    return registration;
}

Vervolgens heb je toegang tot de H2-console op {server}/console/. Voer dit in als de JDBC-URL: jdbc:h2:mem:AZ


Antwoord 2, autoriteit 49%

Vanaf Spring Boot 1.3.0.M3kan de H2-console automatisch worden geconfigureerd.

De vereisten zijn:

  • U ontwikkelt een web-app
  • Spring Boot Dev Tools zijn ingeschakeld
  • H2 bevindt zich op het klassenpad

Zelfs als u Spring Boot Dev Tools niet gebruikt, kunt u de console nog steeds automatisch configureren door spring.h2.console.enabledin te stellen op true

Bekijk ditdeel van de documentatie voor alle details.

Merk op dat bij het configureren op deze manier de console toegankelijk is op: http://localhost:8080/h2- console/


Antwoord 3, autoriteit 37%

Ik heb een mooie tutorial gevonden over dit onderwerp:

https://springframework.guru/using- the-h2-database-console-in-spring-boot-with-spring-security/

Eigenlijk was de juiste JDBC-URL voor mij: jdbc:h2:mem:testdb


Antwoord 4, autoriteit 20%

Van http://docs .spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

H2 webconsole (H2ConsoleProperties):

spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.

Het toevoegen van de bovenstaande twee regels aan mijn application.properties-bestand was voldoende om toegang te krijgen tot de H2-databasewebconsole, met behulp van de standaard gebruikersnaam (sa) en wachtwoord (leeg, zoals in voer geen wachtwoord in wanneer de ui u daarom vraagt) .


Antwoord 5, autoriteit 17%

Een soortgelijk antwoord met de stapsgewijze handleiding.

  1. Voeg de afhankelijkheid van Ontwikkelaarstoolstoe aan uw pom.xmlof build.gradle

Maven

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradel

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}
  1. Toegang tot de db vanaf http://localhost:8080/h2-console/
  2. Specificeer jdbc:h2:mem:testdbals JDBC-URL
  3. U zou de entiteit die u in uw project heeft opgegeven als een tabel moeten zien.

Antwoord 6, autoriteit 17%

Voor Spring Boot 2.1.1rechtstreeks van Spring Initialzr:

  1. Standaard met devtoolsis http://127.0.0.1 :8080/h2-console/

    • POM: spring-boot-starter, h2, spring-boot-starter-web, spring-boot-devtools
  2. Zonder devtools– je moet het instellen in eigenschappen: spring.h2.console.enabled=true spring.h2.console.path=/h2-console

    • POM: spring-boot-starter, h2, spring-boot-starter-web

Zodra u daar bent, stelt u de JDBC-URL in: jdbc:h2:mem:testdb (de standaardversie werkt niet)


Antwoord 7, autoriteit 14%

Ik had alleen onderstaande eigenschappen in /resources/application.properties. Na het uitvoeren van Spring Boot, met behulp van deze URL(http://localhost:8080/h2-console/) , de tabel in de H2-console was zichtbaar en gelezen om de tabelgegevens te bekijken, ook kunt u eenvoudige SQL-opdrachten uitvoeren. Eén ding: in je Java-code zijn de kolomnamen tijdens het ophalen van gegevens hoofdletters, ook al gebruikt schema.sql namen in kleine letters 🙂

spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true

Antwoord 8, autoriteit 11%

Controleer lente application.properties

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

hier is testdb database gedefinieerd
Zorg ervoor dat de H2-console dezelfde waarde heeft terwijl u verbinding maakt, anders maakt het verbinding met de standaard db

voer hier de afbeeldingsbeschrijving in


Antwoord 9, autoriteit 8%

Als je de ontwikkelaarstools van Spring Boot gebruikt, is H2 Console standaard ingeschakeld. Het is toegankelijk via /h2-console/. Gebruik in de login-interface voor invoer JDBC URLde waarde jdbc:h2:mem:testdb. Let op memstring.

Als je de ontwikkelaarstools van Spring Boot niet gebruikt, kun je de console inschakelen in application.propertiesmet spring.h2.console.enabled=true. Hierdoor wordt de console onder /h2-consoleingeschakeld. Als u de URL wilt wijzigen, kunt u een ander item toevoegen met spring.h2.console.path=my_console_path.

De standaardschemanaam is testdb.

Meer details in Spring Boot-documentatie.


Antwoord 10, autoriteit 7%

Om de tabellen te krijgen, hoeft u alleen maar 2 sql-bestanden schema.sql (voor het maken van tabellen) en data.sql (gegevens voor de gemaakte tabellen) aan te maken. Deze bestanden moeten in de map src/main/resources worden geplaatst. Spring boot auto detecteert ze en zorgt voor de rest tijdens runtime.

Als je meer dan 2 DB in je project gebruikt, zorg er dan voor dat je specifieke bestanden gebruikt zoals (schema-h2.sql — voor h2 DB , schema-oracle.sql — voor Oracle DB). Hetzelfde geldt ook voor data.sql.

Zorg er ook voor dat u tabellen verwijdert door de instructie drop table toe te voegen aan uw schema.sql als eerste instructie. Om te voorkomen dat dubbele records worden toegevoegd.

De link voor de lentelaars is hier.

Mijn application.properties is als volgt.

spring.datasource.url=jdbc:h2:~/file/Shiva;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.platform=h2
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.datasource.initialize=true 
spring.error.whitelabel.enabled=true
spring.h2.console.path=/console
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create
spring.hibernate.hbm2ddl.auto=update
spring.hibernate.show_sql=true

U kunt de stappen in de onderstaande link volgen.

https:// springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/


Antwoord 11, autoriteit 6%

Voor Spring Boot 2.3.3.RELEASE rechtstreeks van Spring Initialzr:

POM: data jpa, h2, web

toepassingseigenschappen: spring.h2.console.enabled=true

Als u de toepassing uitvoert, zoekt u naar een regel zoals hieronder in de uitvoeringsconsole:

2020-08-18 21:12:32.664  INFO 63256 --- [           main] o.s.b.a.h2.H2ConsoleAutoConfiguration    : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:eaa9d6da-aa2e-4ad3-9e5b-2b60eb2fcbc5'

Gebruik nu de bovenstaande JDBC-URL voor h2-console en klik op Connect.


Antwoord 12, autoriteit 2%

Ik ontdekte dat met spring boot 2.0.2.RELEASE, het configureren van spring-boot-starter-data-jpa en com.h2database in het POM-bestand niet alleen voldoende is om de H2-console te laten werken. U moet spring-boot-devtools configureren zoals hieronder.
Optioneel kun je de instructie van Aaron Zeckoski in dit bericht volgen

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
 </dependency>

Antwoord 13, autoriteit 2%

Gebruik jdbc:h2:mem:testdb als uw pad wanneer u zich aanmeldt bij de H2-console.

Als je Spring Boot-eigenschappen hebt gewijzigd, kan het zijn dat je gegevensbron anders is, maar het lijkt erop dat je worstelt met het vinden van de standaard. Dat is alles! Je ziet je schema nadat je bent ingelogd op H2.


Antwoord 14

Ik had een heel domme fout gemaakt toen ik hetzelfde probleem had. Ik had H2 DB toegevoegd voor het uitvoeren van unit-testcases en daarom had ik de scopeingesteld op testin pom.xml. Tijdens het uitvoeren van de applicatie met behulp van mvn spring:runheb ik de scopeverwijderd en het werkt nu prima.

Other episodes