Spring Boot Database在其他计算机上仍然存在

时间:2019-04-04 20:10:05

标签: java spring hibernate spring-boot jpa

我希望我的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 个答案:

答案 0 :(得分:1)

您有多种选择

1,如果一个应用程序上有多个开发人员,则应该在任何人都可以访问的服务器或计算机上创建一个共享数据库,例如MySql。

2,如果要使用h2,则可以使用应用程序启动来填充它: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

3,我想这是一个存储在您主目录中文件中的h2 db,因此您也可以复制它<-我不确定这是否可行,但从理论上讲应该没问题

答案 1 :(得分:0)

您的数据将保存到spring.datasource属性配置的数据库中。在您的情况下,这是~/spring-boot-h2-db,它是本地计算机上的H2数据库。

如果要在多台计算机之间共享数据,则需要设置一个它们都可以访问的数据库。对于多个应用程序使用的数据库,H2可能不是正确的选择,Postgres或MySql是更好的选择。

另一个选择是更改H2数据库文件的位置,并将其提交/上载到您的应用程序中。如果您只是想提供一些初始数据,那可能是一个很好的解决方案,但是如果您希望更改在所有应用程序中都可见,那么这将无法解决您的问题。

您还可以使用Flyway之类的工具(由Spring Boot支持)在启动时创建参考数据。您可以生成脚本来创建所有使用H2命令SCRIPT TO 'fileName'设置的现有数据(如this SO answer中所述)。您可以访问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连接字符串,用户名和密码。输入与它们在属性文件中相同的所有详细信息,就可以对H2 DB运行SQL。