RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1073231
Accepted
Antonio112009
Antonio112009
Asked:2020-01-23 05:24:37 +0000 UTC2020-01-23 05:24:37 +0000 UTC 2020-01-23 05:24:37 +0000 UTC

将应用程序部署到服务器 [Spring Boot] 时更改数据库数据和其他数据

  • 772

我以 Jar 文件的形式将我的应用程序扔到服务器上!

在我的应用程序中,为我的计算机配置了数据库连接数据和静态文件的路径,但我希望我不要打扰不断评论 中的数据application.properties,而只是程序本身了解它的位置(在服务器上或在计算机上)并获取必要的数据。

例如,要自动路由静态文件,我使用以下配置:

@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        if (new File("/path/on/my/computer/file/").isDirectory()) {
            registry.addResourceHandler("/data/**").addResourceLocations(
                   "file:/path/on/my/computer/file/"
            );
        }

        if (new File("/path/on/my/server/files/").isDirectory()) {
            registry.addResourceHandler("/data/**").addResourceLocations(
                    "file:/path/on/my/server/files/"
            );
        }

// некоторый код...

}

我不认为这个决定是最好的,我认为这是一个拐杖。我想摆脱它。

另一个例子是数据库连接。我将数据移动到一个单独的文件database.properties中。我认为值得将此文件移到项目外部并设置路径。

目前,我的数据库数据如下所示:

# ==============================================================
# = Data Source
# ==============================================================

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/database
spring.datasource.username=userRemote
spring.datasource.password=password1

#spring.datasource.username=userLocal
#spring.datasource.password=password2

spring
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Z.John
    2020-01-23T15:30:02Z2020-01-23T15:30:02Z

    或者,在收集器级别,您可以在组装过程中从不同的文件夹中获取 application.properties,但是您需要不断维护两个几乎没有区别的 application.properties。

    或者你可以使用注解@Profile("dev")。您可以在此处阅读有关使用配置文件的更多信息https://www.baeldung.com/spring-profiles

    • 0
  2. Best Answer
    Antonio112009
    2020-01-23T22:25:46Z2020-01-23T22:25:46Z

    这个答案使用:
    - YuriSPb♦想法 -从 SO
    回答这个问题

    在我看来,最简单的方法是创建几个application-[profile].properties.

    对于这个项目,我会制作2 个配置文件:

    1. prod- 在服务器上部署应用程序时将使用的数据
    2. dev- 将在应用程序开发中使用的数据

    在 Spring 应用程序中,resources我们在文件夹中创建三个文件:

    • application.properties
    • application-dev.properties
    • application-prod.properties

    应用程序属性:

    profileprod和 for的一般数据将记录在此处dev。根据问题中的数据,表格数据可以这样写:

    # Некоторый код...
    
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/database
    
    # Некоторый код...
    

    同样在此文件中设置默认配置文件:

    应用程序开发:

    我们在开发应用程序时需要的数据都会记录在这里。例如:

    spring.datasource.username=userLocal
    spring.datasource.password=password1
    path.static.resources=/path/on/my/computer/file/
    

    应用产品:

    我们在将应用程序部署到服务器时需要的数据都会记录在这里。例如:

    spring.datasource.username=userRemote
    spring.datasource.password=password1
    path.static.resources=/path/on/my/server/files/
    

    结果,这段代码:

    @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
            if (new File("/path/on/my/computer/file/").isDirectory()) {
                registry.addResourceHandler("/data/**").addResourceLocations(
                       "file:/path/on/my/computer/file/"
                );
            }
    
            if (new File("/path/on/my/server/files/").isDirectory()) {
                registry.addResourceHandler("/data/**").addResourceLocations(
                        "file:/path/on/my/server/files/"
                );
            }
    
    // некоторый код...
    
    }
    

    ...可以简化为一种方法,它不再看起来像“拐杖”:

    @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
            @Value("${path.static.resource}")
            private String pathStatic;
    
            registry.addResourceHandler("/data/**").addResourceLocations(
                "file:" + pathStatic
            );
    
    // некоторый код...
    
    }
    

    从 jar 文件将应用程序部署到服务器时在配置文件之间切换

    用于选择配置文件-Dspring.profiles.active=[profile]。这一行替换профиль по умолчанию了我们需要的配置文件

    因此,例如,要设置配置文件,prod我们编写以下内容:

    java -jar -Dspring.profiles.active=prod ProjectName.jar
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5