spring Boot 将另一个属性文件添加到环境中

vcudknz3  于 2023-03-07  发布在  Spring
关注(0)|答案(3)|浏览(104)

我想知道除了www.example.com文件之外,是否可以在环境路径中添加另一个属性文件application.properties。如果可以,如何指定新路径?这样您就可以使用Autowired Environment变量访问属性。目前在我的Java项目中,默认属性文件application.properties的路径为/soctrav/src. main. resources/application. properties

5lwkijsr

5lwkijsr1#

如果您想在没有命令行参数的情况下执行此操作,这将起到作用。

@SpringBootApplication
@PropertySources({
        @PropertySource("classpath:application.properties"),
        @PropertySource("classpath:anotherbunchof.properties")
})
public class YourApplication{

}
cu6pst1q

cu6pst1q2#

可以使用命令行参数指定其他属性文件:

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

看一看应用程序属性文件Sping Boot 文档章节。

68bkxrlz

68bkxrlz3#

我找到了一个解决方案,它可以使这些属性在Spring环境中可用,并为在@Value("${my.custom.prop}")中使用它们提供支持

@Bean
protected PropertySourcesPlaceholderConfigurer createPropertyConfigurer(ConfigurableEnvironment environment)
        throws IOException {
    PropertySourcesPlaceholderConfigurer result = new PropertySourcesPlaceholderConfigurer();

    FileUrlResource resource = new FileUrlResource(Paths.get("custom-props.properties").toString());
    result.setLocation(resource);
    try (InputStream is = resource.getInputStream()) {
        Properties properties = new Properties();
        properties.load(is);
        environment.getPropertySources().addFirst(new PropertiesPropertySource("customProperties", properties));
    }
    return result;
}

当您不在spring Boot 自动配置的环境中,但可以访问基本的spring特性时,这非常有用。

相关问题