【问题标题】:Build Spring project for run on another system构建 Spring 项目以在另一个系统上运行
【发布时间】:2017-09-04 08:33:58
【问题描述】:

我在自己的本地系统上成功创建了一个 spring boot 项目。我想构建一个 jar 文件,以便可以将其安装在远程服务器上。所以我不得不配置远程服务器的服务器地址和mySql地址,但我无法构建,它有很多错误,它们都可以导致我的系统看不到远程服务器地址和数据库。

这是我的 .properties 文件:

spring.datasource.url=jdbc:mysql://localhost:8081/aths
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=create
server.address=192.168.24.250
server.port=8080

如何处理它以在其他配置上运行? (另一个 IP、数据源和...) 我做对了吗?谢谢

【问题讨论】:

    标签: spring hibernate spring-data remote-server


    【解决方案1】:

    您可以在此处使用弹簧型材: 使用application-{profile}.properties 格式为不同的配置文件创建不同的属性文件,例如application-dev.properties 用于开发,application-prod.properties 用于生产,将您的配置文件特定配置放入其中。然后,当您运行 spring boot 应用程序时,使用 SPRING_PROFILES_ACTIVE 环境变量或 spring.profiles.active 系统属性激活您想要的配置文件。

    最后,您将使用命令运行您的 jar 文件 java -jar -Dspring.profiles.active=prod application.jar

    【讨论】:

    • 你说我应该创建两个属性,例如一个用于本地测试,一个用于服务器?
    • 是的@Kenji,所以spring会通过-Dspring.profiles.active参数值检测到它并加载你的属性,你可以通过spring配置文件为特定配置文件配置特定的东西。
    • 好的,现在我的问题是激活那个 x 属性文件。我应该把 java -jar -Dspring.profiles.active=x 放在哪里?
    • 这个命令只有在你需要创建jar文件的时候才需要,基本上parameter-Dspring.profiles.active是额外的,所以不管你是创建jar还是war,只要用你的命令传递这个参数值,例如:tomcat7 :run -Dspring.profiles.active=prod
    【解决方案2】:

    您可以在资源文件夹中拥有不同的application.properties,并使用弹簧配置文件(例如application-{profile}.properties)并使用指定的配置文件运行应用程序。但是,这仍然将配置项限制为在属性文件中硬编码的内容。运行应用程序时,如果要将其分发给其他人,如果不支持任何配置文件,您可以在启动时提供属性文件。

    因此,例如在与 .jar 文件相同的目录中,创建一个名为 application.properties 的文件,其中包含应用程序所需的所有变量的空占位符,因此管理员可以为他们输入正确的详细信息。然后他们将被要求使用以下命令启动应用程序

    java -jar 'applicaitonname.jar -Dspring.config.name="file:/path/to/application.properties"

    或者springboot会从以下位置的application.properties文件中加载属性:

    1. 当前目录的 /config 子目录。
    2. 当前目录
    3. 无法加载资源文件夹中的默认 application.properties。

    【讨论】:

    • 那么我的应用程序如何获得不同的属性?它现在如何使用服务器属性或现在使用其他属性?是运行时间还是什么?
    • 嗯,当你用-Dspring.config.name="file:/path/to/application.properties"启动它时,你总是可以将另一个配置文件传递给spring boot应用程序
    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多