我正在使用Spring。我已在src/main/resources
中放置了属性文件,并尝试在弹簧bean
中引用它,如下所示。
InputStream input = new FileInputStream("classpath:AwsCredentials.properties");
AWSCredentials credentials = new PropertiesCredentials(input);
上面的代码不起作用,它说File not found
。有什么不对吗?请帮帮我。
答案 0 :(得分:0)
您可以使用Springs resource loading机制将InputStream
移至给定的Resource
。
Resource resource = new ClassPathResource("path/to/AwsCredentials.properties");
AWSCredentials credentials = new PropertiesCredentials(resource.getInputStream());
但是,我强烈建议您使用Environment
abstraction并构建BasicCredentials
,而不是自己管理这些内容。这样可以节省您处理资源和获取输入流的麻烦。您可以通过多种方式配置AWS凭据。
@PropertySource("classpath:AwsCredentials.properties")
public class AWSConfiguration {
@Autowired
private Environment env;
@Bean
public AwsCredentials credentials() {
String secretKey = env.getRequiredProperty("name of property");
String accessKey = env.getRequiredProperty("name of property");
return new BasicCredentials(accessKey, secretKey);
}
}
现在Spring负责为您加载资源。
注意:两个示例都假定AwsCredentials.properties
位于类路径的根目录中。如果它在子目录/包中,则需要添加它。
答案 1 :(得分:0)
我使用getClass()。getResource()方法读取放在/ resources文件夹中的文件
此示例读取json,但也适用于属性文件。
String json = null;
try {
URI path = getClass().getResource("/" + file).toURI();
json = new String(Files.readAllBytes(Paths.get(path)));
} catch (URISyntaxException e) {
logger.error("error in path to the file", e);
} catch (IOException e) {
logger.error("error while reading the file", e);
}
return json;
答案 2 :(得分:-1)
请尝试此更正: -
Resource resource =
appContext.getResource("classpath:src/main/resources/AwsCredentials.properties");
try{
InputStream is = resource.getInputStream();
AWSCredentials credentials = new PropertiesCredentials(input);
}catch(IOException e){
e.printStackTrace();
}