Spring boot application.properties 不适用于多个配置文件
Spring boot application.properties doesn't work with multiple profiles
我在尝试连接到 aws 中的 dynamodb 时遇到了 2 个问题。它在本地工作:
@Configuration
class DynamoDbConfig {
@Value("${amazon.access.key}")
private String awsAccessKey;
@Value("${amazon.access.secret.key}")
private String awsSecretKey;
@Value("${amazon.dynamodb.endpoint}")
private String awsDynamoDBEndPoint;
@Value("${amazon.dynamodb.region}")
private String awsDynamoDBRegion;
@Bean
public AWSCredentials amazonAWSCredentials() {
return new BasicAWSCredentials(awsAccessKey, awsSecretKey);
}
public AWSCredentialsProvider amazonAWSCredentialsProvider() {
return new AWSStaticCredentialsProvider(amazonAWSCredentials());
}
@Bean
public DynamoDB dynamoDB() {
AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(awsDynamoDBEndPoint, awsDynamoDBRegion))
.withCredentials(amazonAWSCredentialsProvider())
.build();
return new DynamoDB(amazonDynamoDB);
}
}
应用-local.properties
amazon.access.key=key1
amazon.access.secret.key=key2
amazon.dynamodb.endpoint=http://localhost:8000
amazon.dynamodb.region=us-east-1
申请-prod.properties
amazon.access.key=${AWS_ACCESS_KEY_ID}
amazon.access.secret.key=${AWS_SECRET_ACCESS_KEY}
amazon.dynamodb.endpoint=dynamodb.us-east-1.amazonaws.com
amazon.dynamodb.region=${AWS_DEFAULT_REGION}
我已经获得了证书,我的 .aws/credentials 看起来不错:
[default]
aws_access_key_id = MyKeyId
aws_secret_access_key = MySecretKey
aws_session_token = blablabla
disney_session_expiration = This is also ok
1 期)看起来总是使用 application-local.properties 配置文件,如果我在 class DynamoDbConfig 中显示 awsAccessKey 和 awsSecretKey,我会得到 key1 和 key2。我尝试了这两个命令:
mvn spring-boot:run -Dspring.profiles.active=prod
mvn spring-boot:run -Pprod
2 问题)我将 application-prod.properties 重命名为 application.properties 以使 spring 使用该配置文件,但我收到此错误消息:
Could not resolve placeholder 'AWS_SECRET_ACCESS_KEY' in value "${AWS_SECRET_ACCESS_KEY}"
我想 profile
不是问题,以下键的值不是 set/defined
${AWS_ACCESS_KEY_ID}
${AWS_SECRET_ACCESS_KEY}
${AWS_DEFAULT_REGION}
我在尝试连接到 aws 中的 dynamodb 时遇到了 2 个问题。它在本地工作:
@Configuration
class DynamoDbConfig {
@Value("${amazon.access.key}")
private String awsAccessKey;
@Value("${amazon.access.secret.key}")
private String awsSecretKey;
@Value("${amazon.dynamodb.endpoint}")
private String awsDynamoDBEndPoint;
@Value("${amazon.dynamodb.region}")
private String awsDynamoDBRegion;
@Bean
public AWSCredentials amazonAWSCredentials() {
return new BasicAWSCredentials(awsAccessKey, awsSecretKey);
}
public AWSCredentialsProvider amazonAWSCredentialsProvider() {
return new AWSStaticCredentialsProvider(amazonAWSCredentials());
}
@Bean
public DynamoDB dynamoDB() {
AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(awsDynamoDBEndPoint, awsDynamoDBRegion))
.withCredentials(amazonAWSCredentialsProvider())
.build();
return new DynamoDB(amazonDynamoDB);
}
}
应用-local.properties
amazon.access.key=key1
amazon.access.secret.key=key2
amazon.dynamodb.endpoint=http://localhost:8000
amazon.dynamodb.region=us-east-1
申请-prod.properties
amazon.access.key=${AWS_ACCESS_KEY_ID}
amazon.access.secret.key=${AWS_SECRET_ACCESS_KEY}
amazon.dynamodb.endpoint=dynamodb.us-east-1.amazonaws.com
amazon.dynamodb.region=${AWS_DEFAULT_REGION}
我已经获得了证书,我的 .aws/credentials 看起来不错:
[default]
aws_access_key_id = MyKeyId
aws_secret_access_key = MySecretKey
aws_session_token = blablabla
disney_session_expiration = This is also ok
1 期)看起来总是使用 application-local.properties 配置文件,如果我在 class DynamoDbConfig 中显示 awsAccessKey 和 awsSecretKey,我会得到 key1 和 key2。我尝试了这两个命令:
mvn spring-boot:run -Dspring.profiles.active=prod
mvn spring-boot:run -Pprod
2 问题)我将 application-prod.properties 重命名为 application.properties 以使 spring 使用该配置文件,但我收到此错误消息:
Could not resolve placeholder 'AWS_SECRET_ACCESS_KEY' in value "${AWS_SECRET_ACCESS_KEY}"
我想 profile
不是问题,以下键的值不是 set/defined
${AWS_ACCESS_KEY_ID}
${AWS_SECRET_ACCESS_KEY}
${AWS_DEFAULT_REGION}