当前位置: 首页 > 知识库问答 >
问题:

使用SpringBoot设置DynamoDB

越源
2023-03-14

我试图设置本地DynamoDB实例与SpringBoot。我跟着这个,但是格拉德尔。

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

BeanCreationException:创建名为“AgentPository”的bean时出错:无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)

我知道这是由于歧义导致的依赖注入失败,但我的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}"
    }
}

发电机配置

@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(tableName="Agent")公共类Agent{私有字符串代理号;私有整数id;私有企业业务;私有代理状态代理状态;

    @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。豆。工厂UnsatifiedPendencyException:创建名为“methodValidationPostProcessor”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]中定义:通过方法“methodValidationPostProcessor”参数0表示未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂BeanCreationException:创建名为“AgentPository”的bean时出错:无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)

共有2个答案

傅恺
2023-03-14

我们创建了一篇端到端的开发文章,展示了如何创建与DynamoDB交互的Spring Boot应用程序。在这个应用程序中,使用了Java V2 DynamoDB API(以及其他AWS API)。此外,它还展示了V2增强客户端的使用——DynamoDB V2 API的一个新功能。

此外,它还演示了如何将应用程序部署到Elastic Beanstalk。

你可以在这里找到开发文章:https://github.com/aws-doc-sdk-examples/tree/master/javav2/usecases/creating_dynamodb_web_app

华宏逸
2023-03-14

这个错误信息相当误导。实际原因是spring data dynamodb库与spring boot版本不匹配。本页列出了版本要求。因此,在我的例子中,修复方法是使用更新spring数据dynamodb

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

compile group: 'com.github.derjust', name: 'spring-data-dynamodb', version: '5.0.4'
 类似资料:
  • 本文向大家介绍Springboot教程之如何设置springboot热重启,包括了Springboot教程之如何设置springboot热重启的使用技巧和注意事项,需要的朋友参考一下 SpringBoot热重启步骤 1.打开点击pom.xml配置文件 2.找到配置文件节点 3.在节点中插入以下代码 4.点击编辑器菜单栏view ->Tool Windows->Maven Projects 中查看是

  • 我有一个rest应用程序,它使用带有tomcat嵌入的spring boot 1.4.2 在客户端,用户可以通过网络摄像头拍照并保存到服务器。 在服务器端,我保存img的例子: /home/test/img/ 在我的Web应用程序中,我需要设置什么才能显示图像?

  • 我正在用SpringBoot配置Consor,并在这里找到了一个文档。即使浏览了其他资源,也没有找到其他配置或场景。 因此,我很好奇当springboot应用程序与consul集成时是否只有这些配置可用。我想深入了解,有人能让我知道任何其他可用的属性吗?

  • 我正在尝试将Apache shiro 1.7.0添加为安全管理器,您会发现我的配置类: shiro的pom.xml条目: 该项目编译成功,但我得到了上面的错误,而试图访问web应用程序,我感谢任何麻或建议。 启动Tomcat上下文时出错。异常:org.springframework.beans.factory.beancreationexception。消息:创建类路径资源[org/apache/

  • 以下是错误消息 java.lang.IllegalStateException:无法加载ApplicationContext 一个使用elasticSearch、mysql、redis等的Spingboot项目,谷歌有很多,但他只是一个新的Spingboot。网上的东西不管用。我不知道怎么改。 application-local.yml 应与ES的配置相关 控制器

  • 问题内容: 当您想使用Javascript更改HTML时,如何知道何时使用以下任一方法? 问题答案: 设置通常用于输入/表单元素。通常用于div,span,td和类似元素。