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


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

http://localhost:8080/console/

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

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

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

10 73

10 ответов:

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

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

в приложение.свойства:

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

В Приложение.Ява (или конфигурации):

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

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

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

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

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

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

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

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

Я нашел хороший учебник по этой теме:

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

в основном правильный URL JDBC для меня был:jdbc:h2:mem:testdb

аналогичный ответ с пошаговым руководством.

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

Maven

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

ш

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

From 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.

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

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

если вы используете инструменты разработчика Spring Boot, он поставляется с консолью H2, включенной по умолчанию. Он может быть доступен из /h2-console/. На интерфейсе входа в систему, для ввода JDBC URL use value 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.

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

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

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

ссылка на spring boot находится здесь.

Мои приложения.свойства заключается в следующем.

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/

Я обнаружил, что с spring boot 2.0.2.Выпуск, настройка 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>

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

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