为什么在Spring Boot中使用DynamoDB的复合键时需要ReflectionEntityInformation?

huangapple go评论97阅读模式
英文:

Why ReflectionEntityInformation when using Composite key of DynamoDB in Spring Boot

问题

错误可能出在Spring Data DynamoDB依赖版本的兼容性上。根据你的日志,看起来问题出在找不到org.springframework.data.repository.core.support.ReflectionEntityInformation类。为了解决这个问题,你可以尝试以下几个步骤:

  1. 检查Spring Data DynamoDB版本: 确保你使用的Spring Data DynamoDB版本与你的Spring Boot版本兼容。你可以在Spring Data DynamoDB的文档或者官方仓库中找到关于版本兼容性的信息。

  2. 更新依赖版本: 如果版本不兼容,尝试升级或者降级Spring Data DynamoDB版本,以便与你的Spring Boot版本匹配。

    1. implementation 'org.springframework.boot:spring-boot-starter-data-dynamodb'
  3. 清理和构建: 在你的项目目录下运行以下命令,确保所有依赖被正确下载并且项目被正确构建。

    1. ./gradlew clean build
  4. 检查依赖冲突: 在你的项目中可能存在依赖冲突。你可以运行以下命令来检查依赖关系:

    1. ./gradlew dependencies

    确保没有多个版本的Spring Data DynamoDB库被引入。

  5. 检查@EnableDynamoDBRepositories注解: 确保在AwsDynamoDbConfig类上使用了@EnableDynamoDBRepositories注解,并且basePackages属性指向了你的Repository包路径。

    1. @Configuration
    2. @EnableDynamoDBRepositories(basePackages = "com.mukit09.dynamodblearning.repository")
    3. public class AwsDynamoDbConfig {
    4. // 配置内容...
    5. }
  6. 考虑删除@EnableScan注解: 如果你的MusicRepository接口不需要扫描整个表,可以尝试删除@EnableScan注解,看看是否能够正常工作。在大多数情况下,不建议在生产环境中使用@EnableScan,因为它会扫描整个表,性能会受到影响。

    1. public interface MusicRepository extends CrudRepository<Music, MusicId> {
    2. }

完成以上步骤后,尝试重新构建和运行你的应用程序,看看问题是否得到解决。

英文:

I am learning DynamoDb, so was trying to do a basic project using Spring Boot and DynamoDB. I checked these link to run this application successfully, but got failed 为什么在Spring Boot中使用DynamoDB的复合键时需要ReflectionEntityInformation?

  1. https://stackoverflow.com/a/57386532/2952011
  2. http://johnhunsley.blogspot.com/2016/11/spring-data-jpa-with-hash-range-key.html
  3. https://medium.com/@leohoc/dynamodb-and-spring-data-a81c546a1305

For db setup, I used docker. Here is my compose file:

  1. version: &#39;3.7&#39;
  2. services:
  3. localstack:
  4. container_name: localstack
  5. image: localstack/localstack:latest
  6. environment:
  7. - DEBUG=1
  8. - USE_SSL=0
  9. - AWS_CBOR_DISABLE=1
  10. - DOCKER_HOST=unix:///var/run/docker.sock
  11. - HOSTNAME=localstack
  12. - SERVICES=dynamodb
  13. - AWS_DEFAULT_REGION=us-east-1
  14. ports:
  15. - &#39;4566-4583:4566-4583&#39;
  16. volumes:
  17. - ${TEMPDIR:-/tmp/localstack}:/var/lib/localstack
  18. - /var/run/docker.sock:/var/run/docker.sock
  19. - ./script/init-dynamodb.sh:/docker-entrypoint-initaws.d/init-dynamodb.sh

The script to create tables is here:

  1. #!/bin/bash
  2. # -- &gt; Create DynamoDb Table
  3. echo Creating DynamoDb \&#39;ItemInfo\&#39; table ...
  4. echo $(awslocal dynamodb create-table --cli-input-json &#39;{
  5. &quot;TableName&quot;:&quot;ItemInfo&quot;,
  6. &quot;KeySchema&quot;:
  7. [
  8. {&quot;AttributeName&quot;:&quot;id&quot;,&quot;KeyType&quot;:&quot;HASH&quot;}
  9. ],
  10. &quot;AttributeDefinitions&quot;:
  11. [
  12. {&quot;AttributeName&quot;:&quot;id&quot;,&quot;AttributeType&quot;:&quot;S&quot;}
  13. ],
  14. &quot;BillingMode&quot;:&quot;PAY_PER_REQUEST&quot;
  15. }&#39;
  16. )
  17. echo Creating DynamoDb \&#39;Music\&#39; table ...
  18. echo $(awslocal dynamodb create-table --cli-input-json &#39;{
  19. &quot;TableName&quot;:&quot;Music&quot;,
  20. &quot;KeySchema&quot;:
  21. [
  22. {&quot;AttributeName&quot;:&quot;Artist&quot;,&quot;KeyType&quot;:&quot;HASH&quot;},
  23. {&quot;AttributeName&quot;:&quot;SongTitle&quot;,&quot;KeyType&quot;:&quot;RANGE&quot;}
  24. ],
  25. &quot;AttributeDefinitions&quot;:
  26. [
  27. {&quot;AttributeName&quot;:&quot;Artist&quot;,&quot;AttributeType&quot;:&quot;S&quot;},
  28. {&quot;AttributeName&quot;:&quot;SongTitle&quot;,&quot;AttributeType&quot;:&quot;S&quot;}
  29. ],
  30. &quot;ProvisionedThroughput&quot;:{
  31. &quot;WriteCapacityUnits&quot;: 5,
  32. &quot;ReadCapacityUnits&quot;: 5
  33. },
  34. &quot;TableClass&quot;: &quot;STANDARD&quot;
  35. }&#39;
  36. )
  37. # --&gt; List DynamoDb Tables
  38. echo Listing tables ...
  39. echo $(awslocal dynamodb list-tables)

So after running:

  1. sudo docker compose up -d

when I execute this:

  1. aws --endpoint-url=http://localhost:4566 --region=us-east-1 dynamodb describe-table --table-name Music

I am getting this:

  1. {
  2. &quot;Table&quot;: {
  3. &quot;AttributeDefinitions&quot;: [
  4. {
  5. &quot;AttributeName&quot;: &quot;Artist&quot;,
  6. &quot;AttributeType&quot;: &quot;S&quot;
  7. },
  8. {
  9. &quot;AttributeName&quot;: &quot;SongTitle&quot;,
  10. &quot;AttributeType&quot;: &quot;S&quot;
  11. }
  12. ],
  13. &quot;TableName&quot;: &quot;Music&quot;,
  14. &quot;KeySchema&quot;: [
  15. {
  16. &quot;AttributeName&quot;: &quot;Artist&quot;,
  17. &quot;KeyType&quot;: &quot;HASH&quot;
  18. },
  19. {
  20. &quot;AttributeName&quot;: &quot;SongTitle&quot;,
  21. &quot;KeyType&quot;: &quot;RANGE&quot;
  22. }
  23. ],
  24. &quot;TableStatus&quot;: &quot;ACTIVE&quot;,
  25. &quot;CreationDateTime&quot;: &quot;2023-03-07T14:17:46.287000+06:00&quot;,
  26. &quot;ProvisionedThroughput&quot;: {
  27. &quot;LastIncreaseDateTime&quot;: &quot;1970-01-01T06:00:00+06:00&quot;,
  28. &quot;LastDecreaseDateTime&quot;: &quot;1970-01-01T06:00:00+06:00&quot;,
  29. &quot;NumberOfDecreasesToday&quot;: 0,
  30. &quot;ReadCapacityUnits&quot;: 5,
  31. &quot;WriteCapacityUnits&quot;: 5
  32. },
  33. &quot;TableSizeBytes&quot;: 0,
  34. &quot;ItemCount&quot;: 0,
  35. &quot;TableArn&quot;: &quot;arn:aws:dynamodb:us-east-1:000000000000:table/Music&quot;,
  36. &quot;TableId&quot;: &quot;bcce1ab3-8f0c-4b8f-9d55-6c69ec1ef2ad&quot;,
  37. &quot;Replicas&quot;: [],
  38. &quot;TableClassSummary&quot;: {
  39. &quot;TableClass&quot;: &quot;STANDARD&quot;
  40. }
  41. }
  42. }

So I believe table creation is okay. Now I am showing the (DynamoDB Table) Music class:

  1. @DynamoDBTable(tableName = &quot;Music&quot;)
  2. public class Music implements Serializable {
  3. @Id
  4. private MusicId musicId;
  5. public Music() {}
  6. public Music(MusicId musicId) {
  7. this.musicId = musicId;
  8. }
  9. public MusicId getMusicId() {
  10. return musicId;
  11. }
  12. public void setMusicId(MusicId musicId) {
  13. this.musicId = musicId;
  14. }
  15. @DynamoDBHashKey(attributeName = &quot;Artist&quot;)
  16. public String getArtist() {
  17. return musicId != null ? musicId.getArtist() : null;
  18. }
  19. public void setArtist(String artist) {
  20. if (musicId == null)
  21. musicId = new MusicId();
  22. musicId.setArtist(artist);
  23. }
  24. @DynamoDBRangeKey(attributeName = &quot;SongTitle&quot;)
  25. public String getSongTitle() {
  26. return musicId != null ? musicId.getSongTitle() : null;
  27. }
  28. public void setSongTitle(String songTitle) {
  29. if (musicId == null)
  30. musicId = new MusicId();
  31. musicId.setSongTitle(songTitle);
  32. }
  33. }

Here is MusicId (DynamoDB Document) class:

  1. @DynamoDBDocument
  2. public class MusicId implements Serializable {
  3. private static final long serialVersionUID = 100L;
  4. public MusicId() {
  5. }
  6. public MusicId(String artist, String songTitle) {
  7. this.artist = artist;
  8. this.songTitle = songTitle;
  9. }
  10. private String artist;
  11. private String songTitle;
  12. @DynamoDBHashKey(attributeName = &quot;Artist&quot;)
  13. public String getArtist() {
  14. return artist;
  15. }
  16. public void setArtist(String artist) {
  17. this.artist = artist;
  18. }
  19. @DynamoDBRangeKey(attributeName = &quot;SongTitle&quot;)
  20. public String getSongTitle() {
  21. return songTitle;
  22. }
  23. public void setSongTitle(String songTitle) {
  24. this.songTitle = songTitle;
  25. }
  26. }

Here is MusicRepository:

  1. @EnableScan
  2. public interface MusicRepository extends CrudRepository&lt;Music, MusicId&gt; {
  3. }

Here is DynamoDbServiceImpl which implements DynamoDbService:

  1. @Service
  2. public class DynamoDbServiceImpl implements DynamoDbService {
  3. private final ItemInfoRepository itemInfoRepository;
  4. private final MusicRepository musicRepository;
  5. @Autowired
  6. public DynamoDbServiceImpl(ItemInfoRepository itemInfoRepository, MusicRepository musicRepository) {
  7. this.itemInfoRepository = itemInfoRepository;
  8. this.musicRepository = musicRepository;
  9. }
  10. @Override
  11. public void saveItem(ItemInfoDto dto) {
  12. ItemInfo itemInfo = new ItemInfo();
  13. itemInfo.setItemName(dto.getItemName());
  14. itemInfo.setItemUrl(dto.getItemUrl());
  15. itemInfoRepository.save(itemInfo);
  16. }
  17. @Override
  18. public void saveMusic(MusicDto dto) {
  19. Music music = new Music();
  20. music.setArtist(dto.getArtist());
  21. musicRepository.save(music);
  22. }
  23. }

And here is the AwsDynamoDbConfig to configure:

  1. @Getter
  2. @Setter
  3. @Configuration
  4. @EnableDynamoDBRepositories(basePackages = &quot;com.mukit09.dynamodblearning.repository&quot;)
  5. public class AwsDynamoDbConfig {
  6. @Value(&quot;${config.aws.region}&quot;)
  7. private String region;
  8. @Value(&quot;${config.aws.dynamodb.url}&quot;)
  9. private String dynamoDbEndpointUrl;
  10. @Value(&quot;${config.aws.dynamodb.access-key}&quot;)
  11. private String accessKey;
  12. @Value(&quot;${config.aws.dynamodb.secret-key}&quot;)
  13. private String secretKey;
  14. @Bean(name = &quot;amazonDynamoDB&quot;)
  15. public AmazonDynamoDB amazonDynamoDB() {
  16. return AmazonDynamoDBClientBuilder.standard()
  17. .withCredentials(getCredentialsProvider())
  18. .withEndpointConfiguration(getEndpointConfiguration(dynamoDbEndpointUrl))
  19. .build();
  20. }
  21. private EndpointConfiguration getEndpointConfiguration(String url) {
  22. return new EndpointConfiguration(url, region);
  23. }
  24. private AWSStaticCredentialsProvider getCredentialsProvider() {
  25. return new AWSStaticCredentialsProvider(getBasicAWSCredentials());
  26. }
  27. private BasicAWSCredentials getBasicAWSCredentials() {
  28. return new BasicAWSCredentials(accessKey, secretKey);
  29. }
  30. }

These are the contents from application.properties:

  1. #dynamoDB
  2. config.aws.region=us-east-1
  3. config.aws.dynamodb.url=http://127.0.0.1:4566
  4. config.aws.dynamodb.access-key=localstack
  5. config.aws.dynamodb.secret-key=localstack
  6. #log
  7. logging.file.name=debug.log
  8. logging.level.root= debug

This is my gradle file (build.gradle):

  1. plugins {
  2. id &#39;java&#39;
  3. id &#39;org.springframework.boot&#39; version &#39;2.7.9&#39;
  4. id &#39;io.spring.dependency-management&#39; version &#39;1.0.15.RELEASE&#39;
  5. }
  6. group = &#39;com.mukit09&#39;
  7. version = &#39;0.0.1-SNAPSHOT&#39;
  8. sourceCompatibility = &#39;11&#39;
  9. configurations {
  10. compileOnly {
  11. extendsFrom annotationProcessor
  12. }
  13. }
  14. repositories {
  15. mavenCentral()
  16. }
  17. dependencies {
  18. implementation &#39;org.springframework.boot:spring-boot-starter&#39;
  19. implementation &#39;org.springframework.boot:spring-boot-starter-web&#39;
  20. implementation &#39;com.github.derjust:spring-data-dynamodb:5.1.0&#39;
  21. implementation &#39;com.amazonaws:aws-java-sdk-dynamodb:1.12.420&#39;
  22. compileOnly &#39;org.projectlombok:lombok&#39;
  23. annotationProcessor &#39;org.springframework.boot:spring-boot-configuration-processor&#39;
  24. annotationProcessor &#39;org.projectlombok:lombok&#39;
  25. }
  26. tasks.named(&#39;test&#39;) {
  27. useJUnitPlatform()
  28. }

When I try to run this application, it is failed keeping this log:

  1. 2023-03-07 17:32:17.375 ERROR 68881 --- [ main] o.s.boot.SpringApplication : Application run failed
  2. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name &#39;dynamoDbController&#39; defined in file [/home/mukit09/code/java/dynamodb-learning/build/classes/java/main/com/mukit09/dynamodblearning/controller/DynamoDbController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name &#39;dynamoDbServiceImpl&#39; defined in file [/home/mukit09/code/java/dynamodb-learning/build/classes/java/main/com/mukit09/dynamodblearning/service/impl/DynamoDbServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;musicRepository&#39; defined in com.mukit09.dynamodblearning.repository.MusicRepository defined in @EnableDynamoDBRepositories declared on AwsDynamoDbConfig: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/repository/core/support/ReflectionEntityInformation
  3. at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.25.jar:5.3.25]
  4. at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.25.jar:5.3.25]
  5. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.25.jar:5.3.25]
  6. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.25.jar:5.3.25]
  7. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.25.jar:5.3.25]
  8. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.25.jar:5.3.25]
  9. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.25.jar:5.3.25]
  10. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.25.jar:5.3.25]
  11. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.25.jar:5.3.25]
  12. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.25.jar:5.3.25]
  13. at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.25.jar:5.3.25]
  14. at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.25.jar:5.3.25]
  15. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.25.jar:5.3.25]
  16. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.9.jar:2.7.9]
  17. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.9.jar:2.7.9]
  18. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.9.jar:2.7.9]
  19. at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.9.jar:2.7.9]
  20. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.9.jar:2.7.9]
  21. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.9.jar:2.7.9]
  22. at com.mukit09.dynamodblearning.DynamodbLearningApplication.main(DynamodbLearningApplication.java:10) ~[main/:na]
  23. Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name &#39;dynamoDbServiceImpl&#39; defined in file [/home/mukit09/code/java/dynamodb-learning/build/classes/java/main/com/mukit09/dynamodblearning/service/impl/DynamoDbServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;musicRepository&#39; defined in com.mukit09.dynamodblearning.repository.MusicRepository defined in @EnableDynamoDBRepositories declared on AwsDynamoDbConfig: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/repository/core/support/ReflectionEntityInformation
  24. at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.25.jar:5.3.25]
  25. at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.25.jar:5.3.25]
  26. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.25.jar:5.3.25]
  27. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.25.jar:5.3.25]
  28. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.25.jar:5.3.25]
  29. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.25.jar:5.3.25]
  30. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.25.jar:5.3.25]
  31. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.25.jar:5.3.25]
  32. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.25.jar:5.3.25]
  33. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.25.jar:5.3.25]
  34. at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.25.jar:5.3.25]
  35. at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.25.jar:5.3.25]
  36. at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.25.jar:5.3.25]
  37. at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.25.jar:5.3.25]
  38. at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.25.jar:5.3.25]
  39. ... 19 common frames omitted
  40. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;musicRepository&#39; defined in com.mukit09.dynamodblearning.repository.MusicRepository defined in @EnableDynamoDBRepositories declared on AwsDynamoDbConfig: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/repository/core/support/ReflectionEntityInformation
  41. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.25.jar:5.3.25]
  42. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.25.jar:5.3.25]
  43. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.25.jar:5.3.25]
  44. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.25.jar:5.3.25]
  45. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.25.jar:5.3.25]
  46. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.25.jar:5.3.25]
  47. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.25.jar:5.3.25]
  48. at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.25.jar:5.3.25]
  49. at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.25.jar:5.3.25]
  50. at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.25.jar:5.3.25]
  51. at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.25.jar:5.3.25]
  52. at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.25.jar:5.3.25]
  53. ... 33 common frames omitted
  54. Caused by: java.lang.NoClassDefFoundError: org/springframework/data/repository/core/support/ReflectionEntityInformation
  55. at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
  56. at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) ~[na:na]
  57. at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[na:na]
  58. at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800) ~[na:na]
  59. at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698) ~[na:na]
  60. at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621) ~[na:na]
  61. at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579) ~[na:na]
  62. at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
  63. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
  64. at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBEntityMetadataSupport.getEntityInformation(DynamoDBEntityMetadataSupport.java:125) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
  65. at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactory.getEntityInformation(DynamoDBRepositoryFactory.java:104) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
  66. at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactory.getDynamoDBRepository(DynamoDBRepositoryFactory.java:128) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
  67. at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactory.getTargetRepository(DynamoDBRepositoryFactory.java:150) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
  68. at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:325) ~[spring-data-commons-2.7.8.jar:2.7.8]
  69. at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:323) ~[spring-data-commons-2.7.8.jar:2.7.8]
  70. at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.7.8.jar:2.7.8]
  71. at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.7.8.jar:2.7.8]
  72. at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329) ~[spring-data-commons-2.7.8.jar:2.7.8]
  73. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.25.jar:5.3.25]
  74. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.25.jar:5.3.25]
  75. ... 44 common frames omitted
  76. Caused by: java.lang.ClassNotFoundException: org.springframework.data.repository.core.support.ReflectionEntityInformation
  77. at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
  78. at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
  79. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
  80. ... 64 common frames omitted
  81. Process finished with exit code 1

As a learner of this stack, definitely I did some mistake. Would you please help me please to find the error I made please?

答案1

得分: 1

这是一个已知问题,你可以在这里这里找到相关信息,因为Spring版本大于2.2的情况下不受支持。

有一个分支可能可以解决这个问题,但我没有进行测试:

https://github.com/boostchicken/spring-data-dynamodb

英文:

This is a known issue, as you can find here and here as Spring > 2.2 is not supported.

There is a fork for which it may work, but I have not tested:

https://github.com/boostchicken/spring-data-dynamodb.

huangapple
  • 本文由 发表于 2023年3月7日 19:44:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/75661561.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定