Spring загрузочное соединение по умолчанию H2 jdbc (и консоль H2)

Я просто пытаюсь увидеть содержимое базы данных H2 для встроенной базы данных H2, которая создает spring -boot, когда я не указываю ничего в своих приложениях .properties и начинаю с mvn spring: run. Я вижу, что hibernate JPA создает таблицы, но если я попытаюсь получить доступ к консоли h2 по URL-адресу ниже, в базе данных нет таблиц.

http://localhost:8080/console/

Я вижу такие предложения, как этот: Просмотр содержимого встроенной базы данных H2, начатой ​​ Spring

Но я не знаю, куда помещать предлагаемый XML в spring -boot, и даже если бы я это сделал, я не хочу, чтобы h2console была больше доступна, когда настроена внешняя база данных, поэтому более вероятно, что Мне нужно обработать это с помощью какого-то условного кода (или, возможно, просто позволить spring автоматически обрабатывать его в наиболее идеальном случае, когда я включаю только H2, когда активирован профиль maven).

Есть ли у кого-нибудь пример кода, показывающий, как заставить консоль H2 работать в процессе загрузки (а также способ узнать, что использует строка подключения jdbc, используемая spring)?

Ответ 1

Вот как я получил консоль H2, работающую в spring -boot с H2. Я не уверен, что это правильно, но поскольку никто другой не предложил решение, я собираюсь предложить, что это лучший способ сделать это.

В моем случае я выбрал конкретное имя для базы данных, чтобы у меня было что-то ввести при запуске консоли H2 (в данном случае "AZ" ). Я думаю, что все это требуется, хотя кажется, что уклонение от платформы spring.jpa.database не повредит ничего.

В 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

В Application.java(или некоторой конфигурации):

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

Затем вы можете получить доступ к консоли H2 на сервере {server}/console/. Введите это как URL JDBC: jdbc: h2: mem: AZ

Ответ 2

Начиная с Spring Boot 1.3.0.M3, консоль H2 может быть настроена автоматически.

Предпосылки:

  • Вы разрабатываете веб-приложение
  • Spring Boot Dev Tools включены
  • H2 находится на пути к классам

Даже если вы не используете Spring Boot Dev Tools, вы все равно можете автоматически настроить консоль, установив для параметра spring.h2.console.enabled значение true

Проверьте эту часть документации для всех деталей.

Обратите внимание, что при такой конфигурации консоль доступна по адресу: http://localhost: 8080/h2-console/

Ответ 4

Аналогичный ответ с помощью руководства Step by Step.

  • Добавьте Инструменты разработчика для pom.xml или build.gradle

Maven

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

Gradle

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}
  1. Доступ к db из http://localhost:8080/h2-console/
  2. Укажите jdbc:h2:mem:testdb как URL-адрес JDBC
  3. Вы должны увидеть объект, который вы указали в своем проекте, в виде таблицы.

Ответ 5

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

H2 Web Console (H2ConsoleProperties):

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

Добавление вышеуказанных двух строк в файл application.properties было достаточно для доступа к веб-консоли базы данных H2, используя имя пользователя по умолчанию (sa) и пароль (пустой).

Ответ 6

У меня были только свойства в /resources/application.properties. После запуска загрузки spring, используя этот URL-адрес (http://localhost:8080/h2-console/), таблица в консоли H2 была видна и прочитана для просмотра данных таблицы, вы также можете запускать простые команды SQL. Одна вещь, в вашем java-коде при извлечении данных, имена столбцов имеют верхний регистр, хотя schema.sql использует имена нижнего регистра:)

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

Ответ 7

Если вы используете инструменты разработчика Spring Boot, он поставляется с включенной по умолчанию консолью H2. Доступ к нему можно получить из /h2-console/. В интерфейсе входа в систему для ввода JDBC URL используйте значение jdbc:h2:mem:testdb. Обратите внимание на строку mem.

Если вы не используете инструменты разработчика Spring Boot, вы можете включить консоль в application.properties используя spring.h2.console.enabled=true. Это включит консоль в /h2-console. Если вы хотите изменить URL-адрес, вы можете добавить еще одну запись с помощью spring.h2.console.path=my_console_path.

Имя схемы по умолчанию - testdb.

Более подробная информация в Spring Boot Documentation.

Ответ 8

Чтобы получить таблицы, вам нужно всего лишь создать 2 sql файла schema.sql(для создания таблицы) и data.sql(данные для созданных таблиц). Эти файлы должны быть помещены в папку src/main/resources. Spring boot автоматически обнаруживает их и заботится обо всем остальном во время выполнения.

Если вы используете более двух БД в своем проекте, убедитесь, что для использования определенных файлов типа (schema-h2.sql - для h2 DB, schema-oracle.sql - для Oracle). То же самое следует соблюдать и для data.sql.

Также убедитесь, что вы отбрасываете таблицы, добавив инструкцию drop table в свой schema.sql в качестве первого оператора. Во избежание добавления дубликатов записей.

Здесь находится ссылка для загрузки Spring.

Мое приложение application.properties выглядит следующим образом.

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.jpa.hibernate.ddl-auto=none
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create
spring.hibernate.hbm2ddl.auto=update
spring.hibernate.show_sql=true

Вы можете выполнить шаги, указанные ниже.

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

Ответ 9

Я обнаружил, что при весенней загрузке 2.0.2.RELEASE конфигурирование spring-boot-starter-data-jpa и com.h2database в файле POM недостаточно для работы консоли H2. Вы должны настроить spring-boot-devtools, как показано ниже. При желании вы можете следовать инструкции Аарона Зекоски в этом посте.

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

Ответ 10

Используйте jdbc: h2: mem: testdb в качестве пути при входе в консоль H2.

Очевидно, что если вы изменили свойства Spring Boot, ваш источник данных может отличаться, но кажется, что вы боретесь с тем, как найти значение по умолчанию. Это все, что нужно сделать! Вы увидите свою схему после входа в H2.

Ответ 11

Проверьте приложение весны. Свойства

spring.datasource.url = JDBC: H2: MEM: TESTDB; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = FALSE

здесь testdb - это база данных, определенная. Убедитесь, что консоль h2 имеет то же значение, но при подключении будет подключена к базе данных по умолчанию.

enter image description here