我有以下部署结构:
marker.title
...
我的开始脚本如下:
├── bin
│ ├── stop.sh
│ └── start.sh
├── config
│ ├── application-dev.properties
│ ├── application-local.properties
│ ├── application.properties
│ └── logback.xml
├── lib
├── myjar.jar
|__ logs
拾取活动配置文件,但似乎忽略了spring.config.location,并从打包的jar中取出。
我已经在这里阅读了所有有关外部配置的内容 - https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html但是我已经尝试了一些变体,包括类路径,例如)
jar -jar ../lib/myjar.jar --spring.profiles.active=dev --spring.config.location=file:./../config/
但它只是不起作用。我也试过在-D中使用该选项,但这也没有用。
感谢您的帮助
答案 0 :(得分:-1)
使用参数:
从jar运行命令java -jar -Dfile.location=myfile.properties your_app.jar
在您的申请中,您可以获得价值:
System.getProperty("file.location");
完整的示例类配置:
@Configuration
@ComponentScan
public class MyConfig{
@Bean
public static PropertySourcesPlaceholderConfigurer properties2() throws IOException {
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
PropertiesFactoryBean properties = new PropertiesFactoryBean();
Resource resource = new FileSystemResource(System.getProperty("file.location"));
properties.setLocation(resource);
propertySourcesPlaceholderConfigurer.setProperties(properties.getObject());
return propertySourcesPlaceholderConfigurer;
}
}
在类(@Component
并扩展它)中,您可以使用属性文件中的变量:
@Value("${myperty.host}")
private String host;