将应用程序属性重写为未定义/未设置
我不确定这是否是一个有效的问题,但我想知道这是否可能。
Spring 引导项目具有一个 application.properties 和几个特定于配置文件的属性。特定于配置文件的属性使用在 application-profile.properties 中定义的任何内容覆盖已定义的 application.properties,并添加那些专门属于配置文件特定属性的属性。下图:
应用程序.属性
key1=value1
key2=value2
应用程序配置文件.属性
key1=valueProfile1
key3=valueProfile3
当应用程序使用此配置文件启动时,它看到的最终属性如下所示:
key1=valueProfile1
key2=value2
key3=valueProfile3
简而言之,您具有公共属性和配置文件属性的并集,其中配置文件属性值追加并覆盖公共属性。
但是,如果在上帝知道什么场景中,我需要在公共应用程序中定义一个属性,但是当应用程序在一个特定的配置文件中启动时,我需要它“未定义” 怎么办?下图:
应用程序.属性
keySpecial=specialValue
key1=value1
key2=value2
应用程序-特殊.属性
key1=valueSpecial1
//unset or undefine keySpecial
keyAlternateSpecial=specialAlternateValue
key3=valueSpecial3
现在,当应用程序以这个“特殊”配置文件开始时,我希望它看到最终属性,如下所示:
keyAlternateSpecial=specialAlternateValue
key1=valueSpecial1
key2=value2
key3=valueSpecial3
请注意,keySpecial 未定义,甚至不存在,当应用程序在此特殊配置文件中运行时。
这可能吗?
注意:我知道我可以避免在通用应用程序.属性中定义“keySpecial”,而是在所有其他特定于配置文件的属性中定义它们。并仅在“特殊”配置文件属性中指定“keyAlternateSpecial”。
更多信息:
让我对此感到疑惑的场景是 spring boot 数据源 jndi 属性。从文档
spring.datasource.jndi-name= # JNDI location of the datasource. Class, url, username & password are ignored when set.
仅此属性的存在就会使应用程序忽略其他数据源属性(类,url,用户名,密码),即使它们已设置。
我不允许从“application.properties”中删除jndi属性。但相反,我想取消设置/取消定义它,并在“特殊”配置文件属性中添加其他数据源属性(类,url,用户名,密码)。