Spring Boot Database сохраняется на других компьютерах - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу, чтобы мое приложение Spring Boot запускалось на других компьютерах с данными примера, которые я ввел. В настоящее время я могу выйти из IDE и перезапустить приложение, и оно работает нормально, но как только я загружаю свой проект для загрузки его коллегами, у них нет данных, к которым они могут получить доступ. Как я могу реализовать функцию, которую я могу загрузить в проект, и каждый, кто использует приложение, может получить доступ к тестовым данным, которые я ввел ранее?

Мои application.properties в основной папке:

spring.h2.console.enabled=true
spring.h2.console.path=/h2

spring.datasource.url=jdbc:h2:~/spring-boot-h2-db;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver

spring.jpa.hibernate.ddl-auto=update

Мой build.gradle:

plugins {
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'de.hsba.bi.traveldiary'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
    testImplementation 'com.h2database:h2'
    implementation 'org.springframework.boot:spring-boot-devtools'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.3.0'
    implementation 'org.springframework.boot:spring-boot-starter-web-services'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
    runtime 'com.h2database:h2'
}

Заранее большое спасибо!

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

У вас есть несколько опций

1. Если над приложением работает более одного разработчика, вы должны создать общую базу данных, например MySql, на сервере или компьютере, доступ к которому может получить любой

2, Если вы хотите перейти с h2, вы можете заполнить его запуском приложения: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

3, я предполагаю, что это h2 db, хранящийся в файле в вашем домашнем каталоге, так что вы также можете скопировать его <- Я не уверен, что это работает, но в теории все должно быть в порядке </p>

0 голосов
/ 04 апреля 2019

Ваши данные сохраняются в базе данных, настроенной свойствами spring.datasource. В вашем случае это ~/spring-boot-h2-db, это база данных H2 на вашем локальном компьютере.

Если вы хотите обмениваться данными между несколькими компьютерами, вам нужно настроить базу данных, к которой они могут получить доступ. Возможно, H2 - неправильный выбор для базы данных, которая используется несколькими приложениями, Postgres или MySql - лучшие варианты.

Другой вариант - изменить местоположение файла базы данных H2 и зафиксировать / загрузить его вместе с приложением. Если вы просто пытаетесь предоставить некоторые исходные данные, это может быть достаточно хорошим решением, но если вы хотите, чтобы изменения были видны во всех приложениях после их внесения, это не решит вашу проблему.

Вы также можете использовать такой инструмент, как Flyway (поддерживается Spring Boot) для создания справочных данных при запуске. Вы можете создавать сценарии для создания всех существующих данных, которые вы настроили, используя команду H2 SCRIPT TO 'fileName' (как описано в в этом ответе SO ). Вы можете получить доступ к консоли H2, где вы можете запустить команду SCRIPT, добавив свойства

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.web-allow-others=true #ONLY if you want to be able to connect using something other than "localhost" in your URL

Если вы перейдете к <application-path>/h2-console, вы увидите экран входа в систему, запрашивающий строку подключения JDBC, имя пользователя и пароль. Введите те же данные для всех них, что и в файле свойств, и вы сможете запускать SQL для своей базы данных H2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...