【问题标题】:Running Spring Boot Application on a different machine在另一台机器上运行 Spring Boot 应用程序
【发布时间】:2018-04-21 18:29:36
【问题描述】:

我正在创建一个 Spring Boot CRUD 应用程序,我希望它在另一台计算机上运行。 我使用 Spring Boot + JPA-Hibernate + MySQL。

我知道 MySQL 只是文件。数据源是指服务器,在我的例子中是 localhost 3306,数据库在哪里。对吗?

当数据源在我的机器上运行时,我可以访问 MySQL 数据库。但是当我将应用程序带到不在网络上的另一台计算机上时,我必须创建数据源,即本地主机并将我的 mysql 文件放在那里。对吧?

我的问题是,是否有一种方法不让用户在每次需要 CRUD 应用程序工作时都启动数据库服务器。顺便说一句,我正在尝试创建一个独立的应用程序。

有没有办法从我们的 Spring Boot 应用程序中使用 sql 文件启动服务器,就像我们使用 SQLite 一样,这是一个无服务器数据库?

【问题讨论】:

  • 您的问题不清楚,因此您需要明确您的目标是什么以及您的应用程序的结构(更多详细信息)。您是在问您的应用程序是否可以连接到现有数据库,还是在问如何通过启动 Spring Boot 在您碰巧使用的任何数据库服务器上自动部署和创建新数据库?
  • 我问的是初始化一个数据源,这里是 MySQL。如果我将 sql 文件复制到新 PC 并运行应用程序 Jar,它会工作吗?
  • DataSource 是一个 Java 对象,允许连接到数据库。数据库可以在同一台机器上,也可以在网络上的其他地方。您可以通过在配置 DataSource 时指定其 URL 来定义其位置。 MySQL是一个数据库。它不是数据源。 SQL 文件只是文件。它们既不是数据源,也不是数据库。它们只包含可以发送到数据库执行的 SQL 指令。现在,你在问什么?请用正确的术语回答 Pytry 的问题。
  • 我将编辑问题
  • 问题已更新

标签: java mysql spring hibernate spring-boot


【解决方案1】:

Spring Boot 为您提供所有事物的默认设置,数据库中的默认设置是 H2,因此当您想要更改此设置并使用任何其他数据库时,您必须在 application.properties 文件中定义连接属性。

在源文件夹中,创建一个资源文件 src/main/resources/application.properties



spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword

  • spring.jpa.hibernate.ddl-auto 可以为none,update,create,create-drop,具体参考Hibernate文档。

  • 无 这是 MySQL 的默认设置,不会更改数据库结构。 update Hibernate 根据给定的实体结构更改数据库。

  • create 每次都创建数据库,但不要在关闭时删除它。
  • create-drop 创建数据库,然后在 SessionFactory 关闭时将其删除。

从 create 开始,因为我们还没有数据库结构。第一次运行后,我们可以根据程序要求将其切换为更新或无。如果您想对数据库结构进行一些更改,请使用 update。

H2 和其他嵌入式数据库的默认设置是 create-drop,但对于其他像 MySQL 这样的数据库则没有

在您的数据库处于生产状态后,将其设为 none 并撤销连接到 Spring 应用程序的 MySQL 用户的所有权限,然后只给他 SELECT、UPDATE、INSERT、DELETE 是一种很好的安全做法。

使应用程序可执行。

虽然可以将此服务打包为传统的 WAR 文件以部署到外部应用程序服务器,但下面演示的更简单的方法会创建一个独立的应用程序。您将所有内容打包在一个可执行的 JAR 文件中,由一个很好的旧 Java main() 方法驱动。在此过程中,您使用 Spring 支持将 Tomcat servlet 容器嵌入为 HTTP 运行时,而不是部署到外部实例。

src/main/java/hello/Application.java



package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
}

向导:https://spring.io/guides/gs/accessing-data-mysql

【讨论】:

  • 感谢您的回答。不过我有一个疑问。你将如何在另一台机器上运行这个可执行文件?就像一台电脑。不会有数据库服务器吧?
  • 使用 Spring Boot,您可以创建带有嵌入式数据库的独立应用程序。最后,您构建一个包含所有必要依赖项、类和资源的可执行 jar 文件,然后运行它。这使得在整个开发生命周期中、跨不同环境等将服务作为应用程序交付、版本化和部署变得容易。
  • 它只是简单地使生成的 h2 数据库可执行吗?你的回答听起来很有希望
猜你喜欢
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
相关资源
最近更新 更多