代码之家  ›  专栏  ›  技术社区  ›  kramsiv94

如何使用SpringBoot PropertySource读取外部配置文件

  •  0
  • kramsiv94  · 技术社区  · 6 年前

    我创建了一个配置类来存储配置值。这些配置值应从配置文件中读入“ config.properties ". 下面是配置类:

    @Configuration
    @ComponentScan(basePackages = {"com.boot.Training.*"})
    @PropertySource("file:/src/main/java/config.properties")
    public class AppConfig {
    
        @Value("${myFirstName}")
        private static String myFirstName;
    
        @Value("${myLastName}")
        private static String myLastName;
    
        public static void showVariables() {
            System.out.println("firstName: " + myFirstName);
            System.out.println("lastName: " + myLastName);
        }
    
    }
    

    以下是本手册的内容 配置属性 文件:

    myFirstName=John    
    myLastName=Doe
    

    运行我的程序应该只打印这些变量的值。但是Eclipse告诉我它找不到 配置属性 文件,即使我指定它位于 /src/main/java/config.properties .

    我可能在指定文件位置时没有考虑其他因素。我错过了什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Todd    6 年前

    您正在使用的位置( file:/src/main/java/config.properties

    一种更常见的方法是发货 config.properties 作为资源目录中项目的一部分,并通过类路径引用它。如果你把它移到 /src/main/resources/config.properties

    @PropertySource("classpath:config.properties")
    

    我相信理论上你可以把它留在家里 /src/main/java 改变你的想法 @PropertySource /resources 是更惯用的方法。

        2
  •  1
  •   MohammadReza Alagheband    6 年前

    file: 指定位于主机环境其他位置的属性文件的位置是:

    @PropertySource("file:/path/to/application.properties")
    
    • 请注意 /path/to/application.properties 应该是指向你的 .properties 文件: 使用和

    系统属性 或者一个 环境变量

    1. 在任何文本编辑器(如nano或gedit)中打开/etc/environment并添加以下行:

      CONF_DIR=/path/to/directory/with/app/config/files
      
    2. 检查系统变量是否已设置:

      echo $CONF_DIR
      /path/to/directory/with/app/config/files
      
    3. 使用PropertySource,如:

      @PropertySource("file:${CONF_DIR}/application.properties")