工厂方法' amazonS3Client' :访问键不能为空

时间:2016-11-24 07:38:02

标签: spring-boot

尝试使用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对象。

有人可以帮我解决我的错误吗?

1 个答案:

答案 0 :(得分:0)

我很确定BeanFactoryPostProcessor实现的ResourceLoaderBeanPostProcessor类是在application.properties的值被spring应用程序加载/注入之前执行的。因此,您的值(创建bean时)为null。 (这就是为什么当你不使用那个特殊课程时它会起作用的原因。)

我建议使用默认凭据链,并将您的凭据放在~/.aws/文件夹中(在本地计算机上和服务器上)。有关详细信息,请参阅http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html