2017-08-29 83 views
1

我正在使用属性文件配置我的spring应用程序。但我必须在开发和生产属性文件之间进行切换。现在我有这样的代码片段设置属性位置环境

@Configuration 
@PropertySource(value = "classpath:config/simulator.properties", ignoreResourceNotFound = false) 
public class AppConfiguration 

但我想的东西与价值=“类路径:$ {ENV:本地} /simulator.properties”

它,如果我没有设置环境变量ENV不是指它必须指向local/simulator.properties,否则如果environment env变量指向生产,那么位置必须是production/simulator.properties。

因此,本地是后备环境。

有什么办法来实现这一目标。我不想使用配置文件,它必须由变量的环境中控制

我不想

+0

你真的尝试过吗? –

回答

0

Spring自动设置配置文件的-D选项

感谢

约翰看从系统根路径,如果我们有Windows然后c:/将被春天自动理解,如果我们有Linux机器,那么/将是根。 所以在这里我们不需要设置类路径或-D标签。

1

如果找到第一个文件和第二个文件,那么可以使用多个@PropertySource注释,并且两个文件中的键匹配,然后将采用后面的一个。请看看here

@PropertySource(value="classpath:local/simulator.properties",ignoreResourceNotFound=true) 
@PropertySource(value="classpath:${env.production}/simulator.properties",ignoreResourceNotFound=true) 
0

其实在我的测试(单元测试4)我用注释:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"classpath:com/myTest/MyTestApplicationContext.xml"}) 

这可以让你对每个测试和独立的一个发展一个单独的应用程序上下文环境。那么当然,在每个应用程序上下文中,您可以配置要从不同位置读取的属性。非常适合我