Spring Boot整合DynamoDB报UnsatisfiedDependencyException错误如何解决
问题解决步骤
核心报错原因是Spring无法读取到amazon.access.key配置项,按以下顺序排查修复:
1. 修复application.yml格式错误
YAML语法要求键与值之间必须保留空格,你当前的配置冒号后直接跟值,Spring无法正常解析,修改为正确格式:
amazon: access: key: AKIAQQABW4A # 冒号后加空格 secret-key: AKIABWCF6E24A # 冒号后加空格 region: us-east-1 # 补全你实际使用的AWS区域,不能为空 end-point: url: dynamodb.us-east-1.amazonaws.com # 本地测试的话可以填http://localhost:8000 server: port: 9001 # 冒号后加空格
2. 检查配置文件位置
确认application.yml文件放在项目src/main/resources根目录下,文件名拼写完全正确,没有多后缀或者大小写错误。
3. 修复DynamoDB配置类逻辑
你当前配置类中注入了区域、端点配置但没有实际使用,会导致后续DynamoDB客户端连接异常,修改amazonDynamoDBConfig方法:
public AmazonDynamoDB amazonDynamoDBConfig(){ return AmazonDynamoDBClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(awsAccessKey,awsSecretKey))) .withRegion(awsRegion) // 新增:设置AWS区域 .withEndpointConfiguration(new AmazonDynamoDB.EndpointConfiguration(awsDynamoDBEndPoint, awsRegion)) // 新增:配置端点 .build(); }
4. 修复后续运行会遇到的隐含问题
4.1 数据模型主键匹配错误
你在IssueRepository的getOneIssue方法中调用mapper.load时传入了IssueId和IssueName作为主键,但IssueAssignment类中配置的RangeKey是AssigneName,会导致查询永远返回空,需要调整主键配置或者查询参数。
4.2 Controller层多@RequestBody错误
PutMapping标注的方法中使用了3个@RequestBody注解,Spring MVC规定单个请求只能有一个请求体,需要把参数改为@RequestParam或者封装为单个DTO对象接收。
内容的提问来源于stack exchange,提问作者Ankur
相关产品推荐
相关产品推荐

