如何解决我如何使用 @Value 在 Spring 中访问 .properties 文件?
我正在尝试从我的 config.properties
文件中获取一些信息,其中包含我的所有凭据信息,如下所示:
cloud.aws.credentials.accessKey=Hello
cloud.aws.credentials.secretKey=Hellobebe
cloud.aws.s3.bucket=hellome
could.aws.region.static=ap-northeast-2
cloud.stack.auto=false
在 java 文件中,我尝试使用 @Value 访问它,但无法获取该值。 这是我的 S3Service.java 代码
package com.aplusinternational.goTrip.service;
import java.io.IOException;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.PutObjectRequest;
import lombok.NoArgsConstructor;
@Service
@NoArgsConstructor
public class S3Service {
private AmazonS3 s3Client;
@Value("${cloud.aws.credentials.accessKey}")
private String accessKey;
@Value("${cloud.aws.credentials.secretKey}")
private String secretKey;
@Value("${cloud.aws.s3.bucket}")
private String bucket;
@Value("${cloud.aws.region.static}")
private String region;
@PostConstruct
public void setS3Client() {
AWSCredentials credentials = new BasicAWSCredentials(this.accessKey,this.secretKey);
s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(this.region)
.build();
}
public String upload(MultipartFile multipartFile,String dirName) throws IOException {
String fileName = dirName + "/" + multipartFile.getOriginalFilename();
String uploadImageUrl = putS3(multipartFile,fileName);
//removeNewFile(multipartFile);
return uploadImageUrl;
}
private String putS3(MultipartFile multipartFile,String fileName) throws IOException {
System.out.println("file is in!: "+ fileName+" putS3");
System.out.println(this.bucket);
s3Client.putObject(new PutObjectRequest(bucket,fileName,multipartFile.getInputStream(),null).withCannedAcl(CannedAccessControlList.PublicRead));
return s3Client.getUrl(bucket,fileName).toString();
}
}
当我运行它时,它会给我 ${cloud.aws.s3.bucket}
本身的结果。错误将是:
enter image description here
我为此花费了数千小时。请帮帮我!
ps。我能够从同一个 .properties 文件中获取数据库信息。
解决方法
@PropertySource(value = {"classpath:config.properties",},encoding = "utf-8") 尝试添加此注释。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。