我希望能够在类路径之外放置application.properties
(例如在d:/
上),并定义spring.profile.active=production
。
如果激活此选项,spring还应该从名为my-production.properties
的类路径中加载属性文件。
我尝试了以下操作,但没有用。我可能忘记了什么?
@Component
@PropertySources({
@PropertySource("classpath:my-default.properties"),
@PropertySource(value = "file:D:/my.properties"),
@PropertySource(value = "classpath:my-${spring.profiles.active}.properties", ignoreResourceNotFound = true)
})
d:\ my.properties:
spring.profiles.active=production
my-default.properties:
testkey=default
my-production.properties:
testkey=production
应用:
@Configuration
@EnableAutoConfiguration
public class AppCfg {
@Value("${testkey}")
private String testkey;
@PostConstruct
public void init() {
Sysout(testkey); //prints: "default" instead of "production"
}
}
答案 0 :(得分:3)
如果要将applciation属性放在其他位置,可以使用命令行参数或环境变量。 请参阅 21.2应用程序属性文件部分 http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/
如果您只想设置有效个人资料,请查看 21部分。外部化配置
例如,您可以使用OS environment variables
覆盖活动的配置文件属性。
您可以设置SPRING_CONFIG_NAME
和SPRING_CONFIG_LOCATION
环境变量以手动设置application.properties的位置。您也可以使用当前目录的/config
子目录或
加载application.properties的当前目录。