Intellij 如何覆盖(spring)多行配置属性

问题描述 投票:0回答:1

在我的春季申请中,我必须提供具有格式的证书

-----BEGIN CERTIFICATE-----
...
ZSBJb1QgSHViIENBIENlcnQgVGVzdCBPbmx5MB4XDTIyMDgwNDEzMjg1MVoXDTIy
MDkwMzEzMjg1MVowFDESMBAGA1UEAwwJamF2YS1zaW0xMIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEA1BHjgtcqmFP+TUdfBYmGU/CqYfEEtD6XaVI8BpJI
yx7y58aSnoPWxek8iM86PL8E8RtMKGZkB29JSLp7BIWuEAgkSZYbtN/cmTCT0r9c
...
-----END CERTIFICATE-----

虽然我可以通过在所有行尾添加

\n\
在应用程序属性中进行设置 如果我将其设置为覆盖属性中的值,它不起作用(BouncyCastle 无法从中创建证书): enter image description here

我还尝试用

替换换行符
  • \n

那么如何正确覆盖这个属性。

spring-boot intellij-idea
1个回答
0
投票

解决这个问题的方法是引用我的存储库外部的 application.yml 文件。

我使用的是 Mac,因此这些说明特定于该环境。

创建外部应用程序.yml

  • 创建一个目录来包含应用程序设置:

    • 例如
      mkdir ~/MyApp_appplication_settings
  • 在该目录中创建 application.yml

    • 例如
      vim ~/MyApp_appplication_settings/application.yml
  • 将私钥添加到application.yml

    • certificate.public-key: |-
        -----BEGIN CERTIFICATE-----
        ... the cert data ...
        -----END CERTIFICATE-----
      

更新 IntelliJ 中的运行/调试配置以使用外部 application.yml

  • 从 IntelliJ 菜单栏中,单击运行 > 编辑配置...
  • 将以下内容添加到“覆盖配置选项”:
    • spring.config.additional-location
      ,值为
      file:/Users/<your-user-directory>/MyApp_appplication_settings/
      • 这告诉 IntelliJ 从哪个外部控制器加载额外的 application.yml 文件
      • 据我所知,路径必须是绝对路径
      • 请务必将
        <your-user-directory>
        替换为您的主目录的名称
      • 请注意,如果
        file:
        后面的目录不存在,应用程序将无法启动。 如果您希望应用程序无论如何都启动,您可以在前面添加
        optional:

您现在应该能够启动您的应用程序,并且现在应该加载证书。


顺便说一下,您也可以通过这种方式使用外部配置文件。

  • 创建一个名为
    application-my-profile.yml
    的文件
    • my-profile
      可以是任何你想要的
    • 您可以拥有任意数量的个人资料
  • 启用配置文件:
    • 从 IntelliJ 菜单栏中,单击运行 > 编辑配置...
    • 单击“修改选项 ⌄”并启用“活动配置文件”
  • 将您想要的任何配置文件名称添加到“活动配置文件”输入中
    • 例如
      my-profile
    • 此列表以逗号分隔

运行应用程序时,

application-my-profile.yml
中的设置也将被加载。

如果您对于不同的环境有不同的凭据,您可能需要使用此功能。

© www.soinside.com 2019 - 2024. All rights reserved.