我有一个标准的springboot网络应用程序。我想加载不在类路径中的属性文件。 application.properties在类路径中,并且正在正确读取。
我在建造一个罐子时没有问题。我只是将.properties放在jar旁边,它可以工作。但是,当我打包战争时,我无法使应用程序读取属性文件。
答案 0 :(得分:0)
您将属性文件与application.properties文件平行并将其加载到这样的类中:
@PropertySource("classpath:foo.properties")
public class My class {
@Value( "${some.property}" )
String myProp;
}
答案 1 :(得分:0)
您可以使用ClassPathResource
。给定用于加载资源的类。
这是给您的示例代码
ClassPathResource resource = new ClassPathResource("/application/context/blabla.yml");
InputStream inputStream = resource.getInputStream();
File file = resource.getFile();
// using inputStream or file
答案 2 :(得分:0)
您可以使用spring application.properties
来具有spring配置文件,并使用spring profile根据需要为每个环境定义单独的属性。您甚至可以将spring profile分离到不同的文件中,例如appication-dev.properties
等等,以便您可以将每个spring配置文件保存在不同的文件中。
您可以使用@Configuration批注来读取属性:
@Configuration
@EnableConfigurationProperties(TestProperties.class)
public class MySampleConfiguration {
}
此处TestProperties.class用于映射属性文件或yaml中的值。 详细参考:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html