当前位置:  开发笔记 > 前端 > 正文

Spring启动如何读取jar外的属性文件

如何解决《Spring启动如何读取jar外的属性文件》经验,为你挑选了3个好方法。

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

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


在java代码中:

@Value("${name}")

private String name;

但在春季启动时,我不知道如何在java代码中做同样的事情.

我试过跟随,但没有工作

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

Alberto.. 32

我对问题的标题和描述感到有点困惑.希望我不会对你的评论更加困惑.

一般来说,Spring Boot对于项目结构以及创建的二进制文件都非常了解.推荐的方式(Spring Boot意见)是构建一个包含所有依赖关系的jar(胖罐).如果您需要在胖罐外定义的配置属性(或者如果这是您构建的那个,则为war),Spring Boot提供了许多选项(参见参考文献1).我喜欢我的应用程序使用标志(spring.config.location)指向外部文件,该标志可以使用系统属性进行设置:

java -jar -Dspring.config.location= myBootProject.jar

请注意,您可以通过使用环境变量来定义外部文件所在的位置.

我希望这有帮助!

参考文献:1.https : //docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html



1> Alberto..:

我对问题的标题和描述感到有点困惑.希望我不会对你的评论更加困惑.

一般来说,Spring Boot对于项目结构以及创建的二进制文件都非常了解.推荐的方式(Spring Boot意见)是构建一个包含所有依赖关系的jar(胖罐).如果您需要在胖罐外定义的配置属性(或者如果这是您构建的那个,则为war),Spring Boot提供了许多选项(参见参考文献1).我喜欢我的应用程序使用标志(spring.config.location)指向外部文件,该标志可以使用系统属性进行设置:

java -jar -Dspring.config.location= myBootProject.jar

请注意,您可以通过使用环境变量来定义外部文件所在的位置.

我希望这有帮助!

参考文献:1.https : //docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html


你指的是多个外部文件?

2> 小智..:

我不确定你是否处理与我相同的情况,但在我的情况下,我有一个jar和一个*.properties文件.我所做的是让*.properties文件位于jar外面是下一个:

@Configuration
public class ApplicationContext {

  @Bean
  public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
    properties.setLocation(new FileSystemResource("application.properties"));
    properties.setIgnoreResourceNotFound(false);

    return properties;
  }
}

当我设置application.properties文件的位置时,我创建了FileSystemResource对象,这允许我获取位于jar旁边的properties.files.例如,如果.properties文件位于类路径中,则可以使用其他类(如ClassPathResource).您可以阅读spring提供的其他类来获取包org.springframework.core.io下的Resource对象..

我希望这些评论有所帮助.



3> 小智..:

如Spring Boot文档中所述,

SpringApplication将从application.properties 以下位置的文件加载属性并将它们添加到Spring环境中:

    当前目录的A/config子目录.

    当前目录

    一个classpath/config包

    类路径根

列表按优先级排序(在列表中较高位置定义的属性将覆盖在较低位置中定义的属性).

一种方法是简单地将'conf'目录重命名为'config',它将毫无问题地工作.因此,除非您希望您的属性文件位于上述4之外的某个位置,否则无需进行额外配置.

在这种情况下,您可以显式定义属性源.

@PropertySource("classpath:config.properties")

和多个属性文件

@PropertySources({
    @PropertySource("classpath:config.properties"),
    @PropertySource("classpath:logging.properties"),
    @PropertySource(value="classpath:missing.properties", ignoreResourceNotFound=true)
})

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有