我有不同环境的配置文件:prod.properties,dev.propertites和test.properties。
使用
通过application-context.xml文件加载属性文件$ {spring.profiles.active}的.properties
并传入-Dspring.profiles.active标志。这适用于我的3个环境。
对于Junit测试,我正在尝试使用
@ActiveProfiles( “测试”)
在我的测试类中,但是$(spring.profiles.active)没有解析。但是当我使用
时System.getProperties()。的setProperty( “spring.profiles.active”, “测试”);
它解决得很好。
我知道@ActiveProfiles仅适用于测试类,但为什么不设置spring.profiles.active属性?它只影响使用哪些bean吗?
这也没有说明谁最适合处理配置文件和属性文件。 Spring profiles and Testing
更新 到目前为止,我已经在我的应用程序上下文文件中使用了以下内容:
<beans profile="dev,prod">
<context:property-placeholder
location="classpath:META-INF/properties/generic.properties,
classpath:META-INF/properties/${spring.profiles.active}/${spring.profiles.active}.properties"/>
<context:component-scan base-package="com.my.package.to.scan"/>
</beans>
<beans profile="test">
<context:property-placeholder
location="classpath:META-INF/properties/generic.properties,
classpath:META-INF/properties/test/test.properties"/>
<context:component-scan base-package="com.my.package.to.scan"/>
</beans>
答案 0 :(得分:0)
顾名思义@ActiveProfile s ,这是个人资料数组。
/**
* The bean definition profiles to activate.
* <p>This attribute may <strong>not</strong> be used in conjunction with
* {@link #value}, but it may be used <em>instead</em> of {@link #value}.
*/
@AliasFor("value")
String[] profiles() default {};
尝试使用@ActiveProfiles({"test"})
。