весенняя загрузка по умолчанию соединение 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 ответов:
вот как я получил консоль 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
totrue
проверить этой часть документации для всех подробности.
обратите внимание, что при настройке в консоли доступен на сайте: 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
аналогичный ответ с пошаговым руководством.
- добавить инструменты разработчика зависимость в
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") }
- доступ к БД с
http://localhost:8080/h2-console/
- указать
jdbc:h2:mem:testdb
как JDBC URL- вы должны увидеть объект, указанный в вашем проекте в виде таблицы.
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 valuejdbc: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>