我有针对不同环境的配置文件:prod.properties,dev.propertites和test.properties。
属性文件通过应用程序上下文加载.xml文件
${spring.profiles.active}.properties
并传入 -Dspring.profiles.active 标志。这个适用于我的 3 个环境的工作文件。
对于我正在尝试使用的 Junit 测试
@ActiveProfiles("测试"(
在我的测试类中,但 $(spring.profiles.active( 无法解析。但是当我使用
System.getProperties((.setProperty("spring.profiles.active", "测试"(;
它解决得很好。
我知道@ActiveProfiles只适用于测试类,但它为什么不设置 spring.profiles.active 属性?它只影响使用哪种豆子吗?
这也不能说明谁最适合处理配置文件和属性文件。 弹簧轮廓和测试
更新:到目前为止,我已经在我的应用程序上下文文件中使用了以下内容:
<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>
顾名思义@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"})
.