繁体   English   中英

在另一台机器上运行Spring Boot Application

[英]Running Spring Boot Application on a different machine

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

我了解MySQL只是文件。 数据源意味着服务器,在我的例子中是localhost 3306,数据库在哪里。

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

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

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

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

在sources文件夹中,创建一个资源文件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文档。

  • none这是MySQL的默认设置,不更改数据库结构。 更新Hibernate根据给定的Entity结构更改数据库。

  • 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM