我在src/main/resources
中有以下文件
bpp-dev.properties
bpp-prod.properties
bpp-test.properties
通过我的STS我可以在两个地方定义关键 envB
VM argument
如-DenvB=dev
Environment
如变量 envB
和值 prod
如果在Configuration
课程中我有以下内容。
@Configuration
@PropertySource("classpath:/com/manuel/jordan/properties/bpp-${envB}.properties")
public class PropertiesConfiguration {
它工作正常但始终优先于System Properties
而不是Environment Variables
,这是默认行为。我在这里没问题。
但如果我想明确地使用Environment Variables
工作,则以下操作失败
@Configuration
@PropertySource("classpath:/com/manuel/jordan/properties/bpp-#{systemEnvironment['envB']}.properties")
public class PropertiesConfiguration {
我总是收到:
Caused by: java.io.FileNotFoundException:
class path resource
[com/manuel/jordan/properties/bpp-#{systemEnvironment['envB']}.properties]
cannot be opened because it does not exist
我如何解决这个问题?
如果我使用功能@PropertySource
并且只是在同一个@Configuration
课程中播放,我会使用以下内容:
@Value("#{systemProperties['envB']}")
private String propertiesEnvB;
@Value("#{systemEnvironment['envB']}")
private String environmentEnvB;
稍后打印,两者都可以。