gpt4 book ai didi

java - Spring 不从属性文件加载 AWS-SNS 凭证

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:24 24 4
gpt4 key购买 nike

我正在构建一个应用程序,该应用程序从 SQL Server 数据库读取数据,然后根据某些数据发送 SMS 文本消息。

该应用程序是用 Java 编写的,带有 Spring 和 Maven。

我遇到的问题是我的 application.properties 文件未正确加载。创建 amazonSNS 时,我收到“IllegalArguementException:访问 key 不能为空”

我有两个属性文件,一个用于开发,一个用于产品

我尝试在 AppConfig 类中使用 @PropertySource 来指定要加载的属性文件,但 aws 访问值仍然为 null。但是我不想使用 @PropertySource 因为我有两个配置文件 dev 和 prod

我的 application-dev.properties AWS 凭证就是这样

aws.sns.type=Transactional
aws.access=123456etc
aws.secret=123456etc

应用程序配置文件

@Configuration
@ComponentScan(basePackages = "com.application")
@EnableIntegration
@EnableScheduling
public class AppConfig implements EnvironmentAware {

private static final Logger logger = LoggerFactory.getLogger(AppConfig.class);

private Environment environment;
@Value("${aws.access}")
private String awsAccessKey;
@Value("${aws.secret}")
private String awsSecretKey;

@Bean
public AmazonSNS amazonSNS() {
BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(awsAccessKey, awsSecretKey);
AmazonSNS snsClient = AmazonSNSClient.builder().withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials)).build();
logger.info("Creating snsClient");
return snsClient;
}

最佳答案

为了解决这个问题,我了解到 @Value 由于某种原因不起作用。 Intellij 告诉我它知道那个值是什么,但是当它加载时它是空的

因此,我没有使用 @Value 来获取 aws.access 和 aws.secret,而是使用了 this.environment.getProperty("aws.access")

像这样

BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(this.environment.getProperty("aws.access"), this.environment.getProperty("aws.secret"));

关于java - Spring 不从属性文件加载 AWS-SNS 凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57151666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com