Spring外部配置位置不起作用

时间:2018-04-07 09:01:18

标签: java spring spring-boot

我有以下部署结构:

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中使用该选项,但这也没有用。

感谢您的帮助

1 个答案:

答案 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;