一尘不染

Spring Boot如何在jar外读取属性文件

spring

在我的目标文件夹中,有2个文件夹,lib和conf。所有的属性文件都放在conf文件夹中,而jars放在lib foulder中。

在Spring Boot之前,我们在spring.xml中使用以下配置来使用@value

<context:property-placeholder location="classpath*:*.properties"/>
并在Java代码中像:

@Value("${name}")

private String name;

但是在spring启动中,我不知道如何在Java代码中执行相同的操作。

我尝试了以下操作,但是没有用

@Configuration
@PropertySource(value = "classpath:aaa.properties")
public class AppConfig {
    @Bean
    public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
    }
}

阅读 355

收藏
2020-04-16

共1个答案

一尘不染

问题的标题和描述让我有些困惑。希望我不会再让你对我的评论感到困惑。

总的来说,Spring Boot对项目结构以及所创建的二进制文件非常反对。推荐的方式(Spring Boot的意见)是构建一个内部具有所有依赖项的jar(fat jar)。如果你需要在胖子外定义的配置属性(或者如果这是你所构建的,则定义war),那么Spring Boot提供了许多选项(请参阅参考资料1)。我希望我的应用程序使用可以通过系统属性设置的标志(spring.config.location)指向外部文件:

java -jar -Dspring.config.location=<path-to-file> myBootProject.jar

请注意,你可以通过使用环境变量定义外部文件的存放位置来执行类似的操作。

2020-04-16