Spring Boot application.properties不适用于多个配置文件

时间:2020-07-19 15:32:24

标签: spring-boot configuration

我在尝试连接到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);
    }

}

application-local.properties

amazon.access.key=key1
amazon.access.secret.key=key2
amazon.dynamodb.endpoint=http://localhost:8000
amazon.dynamodb.region=us-east-1

application-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 /凭据看起来不错:

[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配置文件,如果我在类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}"

1 个答案:

答案 0 :(得分:1)

我想profile没问题,以下键的值未设置/定义

${AWS_ACCESS_KEY_ID}
${AWS_SECRET_ACCESS_KEY}
${AWS_DEFAULT_REGION}