多个环境使用独立的配置文件

4
我正在尝试为生产环境和开发环境拥有不同的属性文件。
我有两个属性文件application-prod.propertiesapplication-dev.properties放置在classpath:/config中。
我添加了VM选项-Dspring.profiles.active=dev
根据我从文档和网络上的许多其他参考资料中所理解的,当访问Spring Environment作为environment.getProperty("")时,“application-dev.properties”中的属性应该被加载。然而,我得到了null,并且似乎Spring没有读取属性文件。
我还尝试在@PropertySource中定义这两个文件。这样做,选择第二个定义的文件并返回相应的属性。Spring没有根据活动配置选择文件。
我是否漏掉了什么?
我也遇到了一些SO问题引起的问题,但我不确定它是否指的是同样的问题。

你是否正在使用自动配置的Spring Boot? - luboskrnac
我是一个新手。据我所知,我没有使用Spring Boot。我正在使用Spring框架进行自动装配(使用context:annotation-config)。 我不确定我在这里是否有意义 :| - tunetopj
1个回答

3

没错,你提到的文档来自Spring Boot项目。这与Spring Framework不同。如果你没有使用Spring Boot,-Dspring.profiles.active=dev将无法工作。

你有两个选项:

  1. 将Spring Boot引入你的项目并开启自动配置(@SpringBootApplication@EnableAutoConfiguration)。
  2. 使用纯Spring Framework特性,如PropertyPlaceholderConfigurer,但它不会给你像Spring Boot特性那样的灵活性,并且你需要创建一些样板代码来处理各种环境。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接