如何在Spring中加载未知的属性文件列表

oxcyiej7  于 2023-02-28  发布在  Spring
关注(0)|答案(1)|浏览(92)

如果我有一个未知大小的文件列表resourceList要加载,y如何加载它?
我见过@PropertySources的用法,但似乎不能使用此方法,因为我只知道执行后的文件列表,(我通过带VM参数的操作获得它,文件是外部的)。

@PropertySources({
        @PropertySource("classpath:application.properties"),
        @PropertySource("classpath:anotherbunchof.properties")
})

我试过属性资源占位符配置器:

@Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        List<String>configLocations = loadConfigLocations();
        List<Resource> resourceList = new ArrayList<>();
        configLocations.forEach(location -> resourceList.add(new FileSystemResource(location)));
        configurer.setLocations(resourceList.toArray(new Resource[]{}));
        return configurer;
    }

但是这只解析注解@Value("${...。如果我试图通过环境获得一些属性**,它是null**。

@Autowire
Environment env;
...
String myProp = env.getProperty("my.property")
siotufzp

siotufzp1#

您可以使用ApplicationStartedEvent或ApplicationReadyEvent并根据需要更新属性。
也可以选择使用CommandLineRunner界面。
它们将按以下顺序运行
应用程序启动事件命令行运行程序应用程序就绪事件

相关问题