我正在尝试为生产环境和开发环境准备单独的属性文件。
我有两个属性文件 application-prod.properties
,application-dev.properties
放在 classpath:/config
我添加了 VM 选项 -Dspring.profiles.active=dev
据我了解the documentation以及网络上的许多其他引用资料,在访问 Spring Environment
作为 environment.getProperty("")
时,应加载“application-dev.properties”中的属性。但是,我得到的是 null,似乎属性文件没有被 Spring 读取。
我还尝试在 @PropertySource
中定义这两个文件。这样做,第二个定义的文件被拾取并返回相应的属性。 Spring 不会根据 Activity 配置文件选择文件。
我错过了什么吗?
我还遇到了 issue raised通过一些SO问题,但我不确定它是否指的是同一个问题。
最佳答案
是的,所以您指向的文档来自 Spring Boot 项目。这与 Spring Framework 不同。如果您不使用 Spring Boot,-Dspring.profiles.active=dev
将不起作用。
你有两个选择:
- 将 Spring Boot 引入您的项目并开启自动配置(
@SpringBootApplication
或@EnableAutoConfiguration
)。 - 使用普通的 Spring Framework 功能,例如
PropertyPlaceholderConfigurer
,但它不会为您提供与 Spring Boot 功能相同的灵 active ,您需要创建一些样板代码来处理各种环境。
关于java - 多个环境的单独属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635215/