Spring Boot + Gradle - 在哪里放置环境配置?

2024-04-01

我正在 Spring Boot 中开发一个简单的应用程序。它是在本地开发的(并且可以工作):

  • Gradle,
  • H2 数据库的连接属性设置为application.properties放置在项目的根目录下
  • Maven 文件夹结构(src/main/groovy, src/main/resources, etc.)

现在我想将其部署到 Openshift,因此我需要使用 MySQL 设置创建一个额外的生产配置,但我不知道将其放在哪里以及如何使用它。

所以我的问题是:

  1. 我应该怎么做才能有两种不同的配置(development and production)?
  2. 配置文件放在哪里?
  3. 我需要改变一些东西吗build.gradle?
  4. How to build具有开发或生产配置的应用程序?
  5. How to run具有开发或生产配置的应用程序?
  6. 创建多个环境配置的最佳实践是什么?

我是一名前端开发人员,所有这些后端内容对我来说并不明显,所以请在您的答案中考虑它。

这是我当前的内容build.gradle

plugins {
    id 'org.springframework.boot' version '1.5.3.RELEASE'
    id 'java'
    id 'groovy'
}

jar {
    baseName = 'myproject'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile 'mysql:mysql-connector-java'
    compile("com.h2database:h2")
    compile("org.springframework.boot:spring-boot-starter-security")
    compile('io.jsonwebtoken:jjwt:0.7.0')
    compile localGroovy()
}

我应该怎么做才能拥有两种不同的配置(开发和生产)?

对于您的情况,您可以使用配置文件来实现它。你可以阅读相关内容here https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html。对于您可以拥有的每个个人资料具体应用属性 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-profile-specific-properties文件(名为application-%PROFILE_NAME%.properties, like application-prod.properties,同样如此.yml配置文件)并且您必须指定要使用的配置文件,然后通过命令行开关启动您的应用程序,例如如下所示:

--spring.profiles.active=prod

配置文件放在哪里?

就和你在同一个地方application.properties file.

我需要更改 build.gradle 中的某些内容吗?

不,您不需要修改构建脚本。由于运行应用程序需要所有特定配置,而不是构建。

如何使用开发或生产配置构建应用程序?

您不需要使用某些特定配置来构建它,只需使用它来运行它即可。

如何使用开发或生产配置运行应用程序?

正如前面所说 - 只需指定启动应用程序时使用的配置文件即可。

创建多个环境配置的最佳实践是什么?

对我来说,如果你使用 spring - 使用配置文件和配置文件特定的配置和 bean 定义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot + Gradle - 在哪里放置环境配置? 的相关文章

  • 如何创建仅接受字母数字字符的正则表达式? [复制]

    这个问题在这里已经有答案了 可能的重复 字母数字和下划线的正则表达式 https stackoverflow com questions 336210 regular expression for alphanumeric and unde
  • Maven项目中的HDF5

    我正在尝试将 hdf hdf5lib H5 导入到 NetBeans 中的 Maven 项目中 它有这个作为导入行 import hdf hdf5lib H5 正如这里所建议的 https support hdfgroup org prod
  • 调试器不会停止在 Intellij IDEA 中的源代码处

    我有一个相当奇怪的问题 无法使用 Intellij IDEA 解决 我正在解析电子邮件文件org apache james mime4j包裹 但我的邮件文件格式不兼容Date 标头 因此 我从 mime4j 源创建了模块 并从磁盘中删除了
  • Java:Swing:设置JButton的位置

    我想实现以下布局 OK
  • 如何确定 JDialog 显示在哪个屏幕上

    我有一个非常大的应用程序 有多个对话框 我的任务是确保不完全可见的对话框 因为用户将其从可见屏幕区域拉出 移回屏幕中心 当我只处理一个屏幕时 这没问题 它工作得很好 但是 该应用程序的大多数用户的桌面上都有两个屏幕 当我尝试找出对话框显示在
  • 带嵌入式 tomcat 的 spring-boot 不会将请求分派到控制器

    我有一个使用 spring boot 和嵌入式 Tomcat 容器的应用程序 据我所知 我的代码与 spring boot 相同示例项目 https github com spring projects spring boot tree m
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 简单的Java程序插入USB热点后速度慢100倍

    我有以下Java程序 class Main public static void main String args throws java io IOException long start System nanoTime java io
  • 如何从 Java 生产代码中删除调试语句

    编译器是否可以从生产代码中删除用于调试目的 例如日志记录 的语句 调试语句需要以某种方式进行标记 可能使用注释 设置属性 debug true 并在每个调试语句中检查它很容易 但这会降低性能 如果编译器能够简单地使调试语句消失 那就太好了
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • java内存不足然后退出

    我有一个必须分析大文件的软件 限制输入或提供无限内存都不是一个选择 所以我必须忍受飞行的 OOME 因为 OOME 只杀死线程 所以我的软件运行在一些糟糕的状态 从外面看一切都很好 因为进程正在运行 但在内部却是脑死亡 我想拔掉它的插头 但
  • 错误包括 bouncycastle 提供商

    我需要使用bouncycastle provider我的项目中的库 我已将其包含在 gradle 项目中 apply plugin application sourceCompatibility 1 6 version 1 0 0 main
  • 更改JavaFX TableView字体大小[重复]

    这个问题在这里已经有答案了 您好 我想在表视图列内的文本上设置字体 我如何用 Java 做到这一点 这是我的代码 感谢帮助 private final TableView
  • 在Android项目中引用(纯java)项目(找不到类)

    我试图在我的 Android 项目中引用一个纯 java 项目 gt Java 项目有一大堆我需要使用的类 哦 正如第一个回复所指出的 我正在使用 eclipse 是的 唯一的问题是 我总是找不到类 XXX 从方法 com example
  • Spring Boot 中的服务限流能力

    有什么办法可以实现Spring中其余服务的服务限制能力 特别是Spring boot 这里的期望是 我的服务暴露于外界 目前每秒 分钟的服务调用数量没有限制 我们希望通过设置限制来控制这一点 我有一个替代选项 通过跟踪并发哈希映射或任何缓存
  • jasper 报告文件中出现错误

    首先 我在 iReport 5 1 0 中创建一个 R D1 jrxml 文件 我执行该报告的 Java 代码如下所示 import java sql Connection import java sql DriverManager imp
  • java.lang.IllegalStateException:FragmentManager 已被销毁

    活动中onResume我称之为 volley request 的方法 它获取项目列表 然后将它们加载到此活动内的 ListFragment 中 当我第一次进入活动时 一切正常 但当我重新进入活动时 ListFragment 为空 并且控制台
  • 为什么找不到 getservletcontext?

    我正在尝试使用getServletContext getRealPath 但我不断收到此错误 cannot find symbol symbol method getServletContext location interface jav
  • 当框架被拖动时,如何设置 JWindow 的位置位于文本字段下方?

    我正在制作一个自动完成项目 就像谷歌一样 我的框架中有一个 jtextfield 每当我在该字段中输入内容时 该文本字段下方就会出现一个 JWindow 并且该窗口来自另一个类 现在的问题是 每当我拖动框架时 如何使窗口始终出现在文本字段下
  • Spring - 使用存储过程时使用 simplejdbccall 进行批量更新

    我正在使用 spring jdbc 模板 使用存储过程创建记录 public Long create City obj SimpleJdbcCall jdbcCall new SimpleJdbcCall getJdbcTemplate g

随机推荐

  • 从 SQL Server 2005 读取 MS Excel 文件

    我需要从 SQL Server 2005 中的查询读取 Microsoft Excel 2003 文件 xls 然后将其中一些数据插入到一些表中 读取文件然后使用其数据本身并不是问题 但我发现 对于列 有时我会得到 NULL 值 而不是 E
  • 带有 jquery 的 IE 复选框无法正常工作

    我正在尝试在页面上使用多个 asp net 复选框 并相应地禁用它们
  • 完全模态的 WPF 窗口?

    我有一个要求 指定使用 WPF 的通知托盘应用程序必须 基于某些条件 弹出一个全局模式的窗口 这应该阻止用户执行任何操作 即使在 Tray 应用程序之外 直到他们满足一些其他条件 此时它将启用关闭按钮并允许用户将其关闭 如何制作这样一扇窗户
  • 我应该如何正确删除 TFS 分支?

    我想知道我应该如何正确地摆脱不再有任何用途的分支 现在 即使我删除它们并提交 它们仍然在特定分支根 目录 的属性窗口中列为分支 如果我选择合并 我不会选择合并到已删除的分支 这显然是符合预期的 但因此我对属性窗口中仍然显示的分支感到困惑 对
  • 如何在 WP8 地图上创建自动缩放图像

    我正在尝试向地图添加多个图钉 当您缩小到足够大时 图钉就会消失 以使图钉变得如此小 以至于不再渲染它们 我通过以下代码成功实现了这种效果 MapPolygon shape new MapPolygon GeoCoordinateCollec
  • 类型的无效操作数 - C++

    我有一个名为 ThreeDigits 的 C 代码类 我这样重载了 操作数 ThreeDigits ThreeDigits operator const ThreeDigits number const double result getN
  • MongoDB:查询名称中包含空格的键

    我只想从 MongoDB 集合中检索某些键的值 但是 该集合有一些名称中带有 空格 的键 例如 Parent key1 some string key2 some string key 3 some string 我知道这是一种错误的方法
  • 调用未定义函数 Intervention\\Image\\Gd\\imagecreatefromjpeg() - laravel

    我收到此错误消息 Call to undefined function Intervention Image Gd imagecreatefromjpeg 这是我的 php 信息 http behika com http behika co
  • 使用什么:var 还是对象名称类型? [复制]

    这个问题在这里已经有答案了 这是我在编程时总是想知道的一个问题 当我们编写代码时该使用什么 var myFiles Directory GetFiles fullPath or string myFiles Directory GetFil
  • 对于颜色逐渐变化的多个绘图,显示 matplotlib 颜色条而不是图例

    我正在尝试制作一个简单的图 显示属于具有特定顺序的大型数据集的许多曲线 比方说图 1 n 曲线的形状随着n的增加而逐渐变化 读者能否准确地看到哪个图属于 n 的哪个值并不重要 但他们应该能够猜测 n 的数量级 因此我做了这样的事情 nVal
  • 如何在 Scala 编译器插件中生成文本形式的新源代码?

    我刚刚完成了 Java 6 编译器插件的第一个版本 它根据注释自动生成包装器 代理 适配器 委托 您可以随意称呼它 由于我正在进行 Java Scala 混合项目 因此我希望能够在 Scala 代码中使用相同的注释 并获得相同的生成代码 当
  • 如何导航到 Clion 链接库中的源代码?

    我有一个链接多个静态库的项目 例如 libModule a 当我尝试导航到模块库内的类时 Clion 仅将我带到标头声明并在那里停止导航 我希望能够深入研究模块库内函数的定义 我遇到了同样的问题 这就是我所做的 在 Clion 中 我通过在
  • Angular2 错误 TS1146:需要声明

    Angular2 新手 我正在使用 Angular io 中的种子文件 但是当我运行 npm start 时 出现 tsc 编译器错误 tsc p src src app app module ts 11 3 错误 TS1146 需要声明
  • 向几何体添加细分

    我正在尝试向球体添加细分 如下所示 http stemkoski github com Three js Subdivision Cube html http stemkoski github com Three js Subdivisio
  • Ajax POST 到控制器操作以更新视图模型,然后重新加载 div

    我仍然对 ajax 的使用感到不安 所以我的实现中存在一些漏洞 我正在尝试发布到一个控制器操作 该操作将调用存储过程来更新我的视图模型 然后重新加载将显示信息的 div 阿贾克斯帖子 order summary panel click fu
  • 在Python中使用@staticmethod和全局函数有什么区别?

    我读过了 staticmethod 和 classmethod 有什么区别 Python https stackoverflow com questions 136097 what is the difference between sta
  • iOS 6 问题将 MPMediaItem 转换为 NSData

    我试过下面的代码 void mediaItemToData MPMediaItem curItem NSURL url curItem valueForProperty MPMediaItemPropertyAssetURL AVURLAs
  • HTML 敏捷包设置

    我正在使用 Agility Pack 来解析 HTML 遵循这个问题在 C 中解析 html 的最佳方法是什么 https stackoverflow com questions 56107 what is the best way to
  • 无法在 VSCode 中调试 Typescript

    这是我的 launch json version 0 2 0 configurations type node name Launch Server request launch program workspaceRoot server s
  • Spring Boot + Gradle - 在哪里放置环境配置?

    我正在 Spring Boot 中开发一个简单的应用程序 它是在本地开发的 并且可以工作 Gradle H2 数据库的连接属性设置为application properties放置在项目的根目录下 Maven 文件夹结构 src main