使用 Spring Boot 设置 DynamoDB

2024-02-11

我正在尝试使用 SpringBoot 设置本地 DynamoDB 实例。我正在关注this https://www.baeldung.com/spring-data-dynamodb但使用 Gradle。

当我尝试运行我的应用程序时,出现以下异常:

BeanCreationException: Error creating bean with name 'agentRepository': Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)

我确实明白这是由于含糊不清而导致依赖注入失败,但我的AgentRepository作为无参构造函数。不知道哪里有歧义。

以下是我的代码:

摇篮文件

buildscript {
    ext {
        springBootVersion = '2.1.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'test.project'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/milestone" }
}

ext['springCloudVersion'] = 'Greenwich.M3'

dependencies {
    //implementation('org.springframework.boot:spring-boot-starter-data-redis')
    implementation('org.springframework.boot:spring-boot-starter-web')

    compile 'org.springframework.data:spring-data-releasetrain:Hopper-SR10'
    compile 'com.amazonaws:aws-java-sdk-dynamodb:1.11.34'
    compile 'com.github.derjust:spring-data-dynamodb:4.3.1'

    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

DynamoDB配置

@Configuration
@EnableDynamoDBRepositories(basePackages = "test.project.agent.agent")
public class DynamoConfig
{
    @Value("${aws.dynamodb.endpoint}")
    private String dynamoDBEndpoint;

    @Value("${aws.auth.accesskey}")
    private String awsAccessKey;

    @Value("${aws.auth.secretkey}")
    private String awsSecretKey;

    @Bean
    public AmazonDynamoDB amazonDynamoDB()
    {
        AmazonDynamoDB dynamoDB = new AmazonDynamoDBClient(getAwsCredentials());
        dynamoDB.setEndpoint(dynamoDBEndpoint);

        return dynamoDB;
    }

    @Bean
    public AWSCredentials getAwsCredentials()
    {
        return new BasicAWSCredentials(awsAccessKey, awsSecretKey);
    }
}

代理人(实体)

@DynamoDBTable(表名 = "代理") 公开课代理 { 私有字符串代理号码; 私有整数 ID; 私营企业; 私有 AgentState 代理状态;

    @DynamoDBHashKey(attributeName = "agentNumber")
    public String getAgentNumber()
    {
        return agentNumber;
    }

    public void setAgentNumber(String agentNumber)
    {
        this.agentNumber = agentNumber;
    }

    @DynamoDBAttribute(attributeName = "id")
    public Integer getId()
    {
        return id;
    }

    public void setId(Integer id)
    {
        this.id = id;
    }

    @DynamoDBAttribute(attributeName = "business")
    public Business getBusiness()
    {
        return business;
    }

    public void setBusiness(Business business)
    {
        this.business = business;
    }

    @DynamoDBAttribute(attributeName = "agentState")
    public AgentState getAgentState()
    {
        return agentState;
    }

    public void setAgentState(AgentState agentState)
    {
        this.agentState = agentState;
    }
}

代理存储库

package test.project.agent.agent;

import org.socialsignin.spring.data.dynamodb.repository.EnableScan;
import org.springframework.data.repository.CrudRepository;


@EnableScan
public interface AgentRepository extends CrudRepository<Agent, String>
{
    Agent findByNumber(String number);
}

AgentController(注入AgentRepository的地方)

@RestController
@RequestMapping(value = "/v1/agents")
public class AgentController
{
    @Autowired
    private AgentRepository agentRepository;

    @RequestMapping(value = "/test", method = RequestMethod.POST)
    public void test()
    {
        Agent agent = new Agent();
        agent.setAgentNumber("123456");
        agent.setId(1);
    }
}

导致此错误的原因是什么以及如何解决此问题?

注意:即使部分AgentRepository注入被注释掉,应用程序无法启动。

除了上述错误之外,我还得到以下异常:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'methodValidationPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'agentRepository': Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)


该错误消息相当具有误导性。真正的原因是spring-data-dynamodb库不匹配spring-boot版本。This https://github.com/derjust/spring-data-dynamodb页面列出了版本要求。所以就我而言,修复方法是使用更新spring-data-dynamodb.

所以在 Gradle 文件中(使用版本 5.0.4 而不是 4.3.1)

compile group: 'com.github.derjust', name: 'spring-data-dynamodb', version: '5.0.4'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Boot 设置 DynamoDB 的相关文章

随机推荐

  • Java 8 Stream foreach 中递增计数器

    我想增加一个counter这是一个AtomicInteger当我循环使用foreach public class ConstructorTest public static void main String args AtomicInteg
  • CodeIgniter:如何执行选择(不同字段名)MySQL 查询

    我正在尝试检索字段中所有唯一值的计数 SQL 示例 SELECT count distinct accessid FROM accesslog WHERE record 123 如何在 CodeIgniter 内部执行此类查询 我知道我可以
  • 致命 python 错误:initfsencoding:无法加载文件系统编解码器的原因可能是什么?

    我正在使用 Python 3 7 64 位 并安装CX 冻结用于将 py 转换为 exe 我使用此命令提示符将 Python 脚本转换为可执行文件 python filename build 它成功构建了可执行文件 但是当我执行 EXE 文
  • 初始化 Quartz 的最佳方法是什么?

    我不太确定初始化 Quartz 来安排 cron 作业的最佳方法是什么 我的环境是Tomcat 我有一项每天都需要触发的工作 我应该创建一个单独的 Servlet 来初始化 Quartz 并安排我的工作吗 我正在考虑创建一个 Servlet
  • Matplotlib:删除有关 matplotlib.use() 的警告

    在我使用的Python模块中matplotlib 我想确保当我通过以下方式在远程计算机上运行脚本时它也能工作ssh 所以我这样做 import matplotlib matplotlib use Agg from matplotlib ba
  • IntelliJ gradle 添加模块依赖

    使用 IntelliJ 2016 2 使用 Gradle 2 14 1 我有 2 个项目 每个项目都有自己的 build gradle 文件和单独的目录结构 myLib meant to be jarred and used by othe
  • 使用自定义 __setattr__ 和 __slots__ 进行 Python 属性查找

    我有一堂课使用 slots 并通过重写使它们几乎不可变 setattr 总是引发错误 class A slots a b x def init self a b object setattr self a a object setattr
  • 如何制作堆积条形图的动画?

    我正在尝试在四个堆叠条形图之间进行转换 输出并不完全符合我的预期 我无法确定这是否是我的代码中的错误 或者是否是我的代码中的错误gganimateR 包 这是我使用的数据框 df lt structure list name c varia
  • Jetpack 导航动画完整监听器

    当新的导航事件发生时 我尝试使用 Jetpack 导航库获取回调完全的以更改状态栏颜色 到目前为止我已经找到了navController addOnDestinationChangedListener当有新导航时它会通知我starts但不是
  • 过滤 gremlin 结果

    我是 Gremlin 新手 我正在使用 Gremlin 3 0 2 和 Stardog 5 0 我编写此查询是为了找出 schema org 本体中两个实体之间的路径 下面是输出 gremlin gt g V hasLabel Canal
  • 我可以将 npm node_modules 目录放在我的项目之外吗

    我可以像 Maven 处理其依赖项一样将 node modules 目录放在项目之外吗 有点 这node modules目录实际上并不是npm但有一个特点node js Node js 如何使用node modules 当你需要一个模块时
  • 如何在 python 2.x 和 3.x 中直接打印到文本文件?

    而不是使用write Python 2 和 3 中写入文本文件的其他方法是什么 file open filename txt w file write some text 您可以使用print function 未来进口 http docs
  • IntelliJ 的 WindowBuilder 等效项? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Eclipse 有一个名为 WindowBuilder 的插件 IntelliJ 有等效的吗 IntelliJ 有它自己的 GUI 构建器
  • 如何使用Graph API获取用户的好友总数[JavaScript]

    在对 Facebook 的 Graph API v2 8 做了一些研究之后 我终于明白了如何使用JavaScript 我想要具体做的是 在用户登录我的应用程序后 他们会单击一个按钮来获取其好友总数 这是我尝试用来完成此操作的代码 HTML
  • 如何使用 DKIM 签署 Javamail

    有没有一个库或一种方法可以在没有外部库的情况下做到这一点 我使用 apache james 作为我的邮件服务器 目前发送电子邮件如下 public void sendMessage String to String subject Stri
  • Python OpenCVsolvePnP转换为欧拉角

    我正在像这样使用solvePnP import cv2 import numpy as np Read Image im cv2 imread headPose jpg size im shape 2D image points If yo
  • Android Studio 中的混淆

    有没有什么混淆工具可以使用安卓工作室 IntelliGuard 插件是宣布支持 http plugins jetbrains com plugin 4511 pr 由 Studio 提供 但由于缺少 AntSupport 插件 它实际上不起
  • HostingEnvironment 类和 HttpRuntime 类有什么区别?

    正如你在这里看到的ASP NET 应用程序生命周期 http msdn microsoft com en us library ms178473 aspx 有两张图片 第一个在 AppDomain 中创建 HostingEnvironmen
  • 在 JavaFx 中重新启动应用程序

    我想关闭然后重新启动我正在制作的已经运行的应用程序 自动 通过单击按钮或类似的东西 我想这样做是为了以其他语言重新启动应用程序 我是对 JavaFx 和 Java 不太熟悉 请问您能给我解决这个问题吗 这个问题缺乏细节 您确实提到了 Jav
  • 使用 Spring Boot 设置 DynamoDB

    我正在尝试使用 SpringBoot 设置本地 DynamoDB 实例 我正在关注this https www baeldung com spring data dynamodb但使用 Gradle 当我尝试运行我的应用程序时 出现以下异常