尝试使用spring boot应用程序连接aws-s3。我何时使用
import org.springframework.cloud.aws.context.support.io.ResourceLoaderBeanPostProcessor
获取aws键不能为null。
@Configuration
@EnableContextResourceLoader
@EnableContextCredentials
public class S3Configuration {
@Value("${cloud.aws.credentials.accessKey}")
private String ACCESS_KEY;
@Value("${cloud.aws.credentials.secretKey}")
private String SECRET_KEY;
@Value("${cloud.aws.region}")
private String region;
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public AmazonS3Client amazonS3Client() {
return new AmazonS3Client(new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY));
}
@Bean
public ResourceLoaderBeanPostProcessor resourceLoaderBeanPostProcessor() {
return new ResourceLoaderBeanPostProcessor(amazonS3Client());
}
}
如果我不使用" ResourceLoaderBeanPostProcessor"通过读取application.properties的属性表,然后成功创建了AmazonS3Client对象。
有人可以帮我解决我的错误吗?
答案 0 :(得分:0)
我很确定BeanFactoryPostProcessor
实现的ResourceLoaderBeanPostProcessor
类是在application.properties
的值被spring应用程序加载/注入之前执行的。因此,您的值(创建bean时)为null
。 (这就是为什么当你不使用那个特殊课程时它会起作用的原因。)
我建议使用默认凭据链,并将您的凭据放在~/.aws/
文件夹中(在本地计算机上和服务器上)。有关详细信息,请参阅http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html。